Technical Note TN1104
Interrupt-Safe Routines

ñ⁄éü

Mac OS 9 Ç‹Ç≈Çà Mac OS Ç…ÇÕÅAíËã`Ç™ïsñæämÇ»ÉvÉçÉOÉâÉ~ÉìÉOä¬ã´Ç™Ç¢Ç≠ǬǩdžÇËÇ‹Ç∑ÅBDZÇÃÇÊǧǻä¬ã´Ç≈égópÇ≈Ç´ÇÈÉVÉXÉeÉÄÉTÅ[ÉrÉXÇΔégópÇ≈ǴǻǢÉTÅ[ÉrÉXǙdžÇËÇ‹Ç∑ÅBDZÇÍÇÁä¬ã´ÇÃåƒÇ—ñºÇÕï°êîÇÃà·Ç§Ç‡ÇÃÇéwÇ∑èÍçáǙdžǡǃÅANjǨÇÁÇÌǵǢÇÃÇ≈Ç∑ÅBDZÇÃÇΩÇflÉvÉçÉOÉâÉ}Çç¨óêÇ≥ÇπǃǴNjǵÇΩÅB

DZÇÃÉeÉNÉjÉJÉãÉmÅ[ÉgÇ≈ÇÕDZÇÃç¨óêÇï•ê@ǵÇÊǧÇΔÇ∑ÇÈLJÇÃÇ≈Ç∑ÅBǪÇÍǺÇÍÇÃé¿çsÉåÉxÉãÇ…ÉÜÉjÅ[ÉNÇ»ñºëOÇó^ǶÅAÉvÉçÉOÉâÉÄÉRÅ[ÉhÇ™ì¡íËÇÃé¿çsÉåÉxÉãÇ…ì¸ÇÈï˚ñ@ÇΔǪÇÃóùóRÇê‡ñæÇµÅAì¡íËÇÃé¿çsÉåÉxÉãDždžÇÈÉvÉçÉOÉâÉÄÉRÅ[ÉhÇ™íºñ Ç∑ÇÈêßñÒDžǬǢǃê‡ñæÇµÇ‹Ç∑ÅB

DZÇÃÉeÉNÉjÉJÉãÉmÅ[ÉgÇÕäÑÇËçûÇ›éûÇ…é¿çsÇ∑ÇÈÉRÅ[ÉhÇèëÇ≠ÉvÉçÉOÉâÉ}Ç‚ÉVÉXÉeÉÄÉåÉxÉãÇ≈é¿çsÇ∑ÇÈÉvÉçÉOÉâÉÄÇäJî≠Ç∑ÇÈÉfÉxÉçÉbÉpÇ…ÇΔǡǃÅAïKå©Ç≈Ç∑ÅB

 Updated: November 8, 2000






ÇÕÇ∂ÇflÇ…

ÉcÅ[ÉãÉ{ÉbÉNÉXÉRÅ[ÉãÇÃÇ§ÇøÅAäÑÇËçûÇ›éûÇ…égópâ¬î\ǻLJÇÃÇΔégópÇ≈ǴǻǢLJÇÃDžǬǢǃëΩÇ≠ÇÃç¨óêǙdžÇËNjǵÇΩÅBDZÇÃÉeÉNÉjÉJÉãÉmÅ[ÉgÇ≈ÇÕäÑÇËçûÇ›éûÇ…égópâ¬î\Ç»ÉcÅ[ÉãÉ{ÉbÉNÉXÉRÅ[ÉãDžǬǢǃê‡ñæÇµÇ‹Ç∑ÅB

DZÇÃÉeÉNÉjÉJÉãÉmÅ[ÉgÇ≈ÇÕäÑÇËçûÇ›éûÇ…åƒÇ—èoǵǃLJà¿ëSÇ»ÉVÉXÉeÉÄÉRÅ[ÉãÇåfç⁄ǵNjÇ∑ÅBäÑÇËçûÇ›éûÇ…åƒÇ—èoÇ∑ÇΔäÎåØÇ»ÉRÅ[ÉãÇÕéÊÇËè„Ç∞Ç‹ÇπÇÒÅBǪÇÍÇÕéüÇÃÇÊǧǻóùóRÇ©ÇÁÇ≈Ç∑ÅBMac OS ÇÃÉVÉXÉeÉÄÉRÅ[ÉãÇÕëùǶÇÈàÍï˚Ç≈Ç∑ÅBÇ‹ÇΩÅAä˘ë∂ÇÃÉVÉXÉeÉÄÉRÅ[ÉãÇ…éËÇâ¡Ç¶ÇÈDZÇΔLJdžÇËÇ‹Ç∑ÇÃÇ≈ÅAâflãéÇ…äÑÇËçûÇ›éûÇ…åƒÇ—èoǵǃLJà¿ëSÇæÇ¡ÇΩÉãÅ[É`ÉìÇ™ÅAäÑÇËçûÇ›éûÇ…ÇÕégópÇ≈Ç´Ç»Ç≠Ç»ÇÈèÍçáǙdžÇËÇ‹Ç∑ÅBäÑÇËçûÇ›éûÇ…åƒÇ—èoǵǃLJà¿ëSÇ»ÉVÉXÉeÉÄÉRÅ[ÉãÇæÇØÇåfç⁄Ç∑ÇÈDZÇΔÇ≈ÅAǪÇÃÉäÉXÉgÇ™ç°å„LJê≥ämÇ≈džÇÈâ¬î\ê´Ç™çÇÇ¢Ç≈Ç∑ÅB

DTS Ç≈ÇÕÅADZÇÃÉeÉNÉjÉJÉãÉmÅ[ÉgÇ…åfç⁄Ç≥ÇÍǃǢǻǢÉVÉXÉeÉÄÉRÅ[ÉãÇäÑÇËçûÇ›éûÇ…åƒÇ—èoÇ≥ǻǢÇÊǧêÑèßǵǃǢNjÇ∑ÅBÇΩÇæÇµÅADZÇÍÇÕÉKÉCÉhÉâÉCÉìÇ≈džÇËÅAëºÇ…LJà¿ëSÇ»ÉVÉXÉeÉÄÉRÅ[ÉãÇ™ë∂ç›Ç∑ÇÈǩLJǵÇÍÇ‹ÇπÇÒÅBäÑÇËçûÇ›éûÇ…åƒÇ—èoǵǃLJà¿ëSÇæÇΔévǡǃǢÇΩÉVÉXÉeÉÄÉRÅ[ÉãǙDZÇÃÉeÉNÉjÉJÉãÉmÅ[ÉgÇ…åfç⁄Ç≥ÇÍǃǢǻǢÇÊǧÇ≈ǵÇΩÇÁÅAÉtÉBÅ[ÉhÉoÉbÉNÇÇ®ëóÇËâ∫Ç≥Ç¢ÅBàÍǬÇÃó·ÇΔǵǃÅADZÇÃÉeÉNÉjÉJÉãÉmÅ[ÉgÇÃç≈èâÇÃÉoÅ[ÉWÉáÉìÇ≈ÇÕ SetCursor Ç™åfç⁄Ç≥ÇÍǃǢNjÇπÇÒÇ≈ǵÇΩÇ™ÅAÉfÉxÉçÉbÉpÇ©ÇÁÇÃÉtÉBÅ[ÉhÉoÉbÉNÇ…ÇÊÇËÅAäÑÇËçûÇ›éûÇ…åƒÇ—èoǵǃLJà¿ëSÇ»ÉVÉXÉeÉÄÉRÅ[ÉãÇΔǵǃí«â¡Ç≥ÇÍNjǵÇΩÅB

äÑÇËçûÇ›éûÇ…åƒÇ—èoǵǃLJà¿ëSÇ»ÉãÅ[É`ÉìÇ≈LJÅAïsìKìñÇ»ÉpÉbÉ`ÇdžǃÇÈÇΔÅAäÎåØÇ»ÉRÅ[ÉãDžǻǡǃǵNjǢNjÇ∑ÅBà¿ëSÇ»ÉãÅ[É`ÉìÇÃÉpÉbÉ`ÇÕäÑÇËçûÇ›éûÇ…é¿çsÇ∑ÇÈÇÃÇ≈ÅAäÑÇËçûÇ›éûDžǵǃÇÕÇ»ÇÁǻǢDZÇΔÇîÇØÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅB

íê:
DTS Ç≈ÇÕÅAÉpÉbÉ`ÇÕÇ«ÇÒÇ»èÍçáÇ≈LJîÇØÇÈÇÊǧDžêÑèßǵǃNjǢÇËNjǵÇΩÇ™ÅAǫǧǵǃLJÉpÉbÉ`ÇdžǃÇÈèÍçáÇÕê≥ǵÇ≠ÉpÉbÉ`Çdžǃǃâ∫Ç≥Ç¢ÅB



ãåî≈Çà Inside Macintosh Çà Volume 6 Çà Appendix B Ç…ÇÕÅAäÑÇËçûÇ›éûÇ…åƒÇ—èoǵǃLJÇÊÇ¢ÉãÅ[É`ÉìÇÃàÍóóÇ™åfç⁄Ç≥ÇÍǃǢNjÇ∑ÅBDZÇÃÉeÉNÉjÉJÉãÉmÅ[ÉgÇÕǪÇÃàÍóóÇíuÇ´ä∑ǶÇÈLJÇÃÇ≈ÅAÇ≥ÇÁÇ…ïKóvÇ…âûÇ∂ǃê‡ñæÇ‡â¡Ç¶Ç‹ÇµÇΩÅBInside Macintosh Çà Volume 6 Çà Appendix B ÇÃàÍóóÇÕLJǧégópǵǻǢÇ≈Ç≠ÇæÇ≥Ç¢ÅB

ÉgÉbÉvÇ…ñflÇÈ



é¿çsÉåÉxÉã

Mac OS 9 Ç‹Ç≈Çà Mac OS ÇÕéüÇÃé¿çsÉåÉxÉãÇÉTÉ|Å[ÉgǵNjÇ∑ÅB

  • ÉnÅ[ÉhÉEÉFÉAäÑÇËçûÇ›
  • íxâÑÉ^ÉXÉNÅiDeferred TaskÅj
  • ÉVÉXÉeÉÄÉ^ÉXÉNÅiSystem TaskÅj

ÉlÉCÉeÉBÉuÉfÉoÉCÉXÉhÉâÉCÉoÉÇÉfÉãÇÕè„ãLÇ…â¡Ç¶ÇƒéüÇÃÉåÉxÉãLJíËã`ǵǃǢNjÇ∑ÅB

  • ÉlÉCÉeÉBÉuÉnÅ[ÉhÉEÉFÉAäÑÇËçûÇ›
  • ìÒéüäÑÇËçûÇ›
  • É^ÉXÉN
  • É\ÉtÉgÉEÉFÉAäÑÇËçûÇ›

DZÇÍÇÁé¿çsÉåÉxÉãÇÕÅACopland ÇÃé¿çsÉåÉxÉãÇÉÇÉfÉãÇ…çÏê¨Ç≥ÇÍÇΩLJÇÃÇ≈Ç∑Ç™ÅAè]óàÇÃÉÇÉfÉãÇΔLJǮǮNjǩDžëŒâûǵǃǢNjÇ∑ÅB

  • ÉlÉCÉeÉBÉuÉnÅ[ÉhÉEÉFÉAäÑÇËçûÇ›ÇÕÉnÅ[ÉhÉEÉFÉAäÑÇËçûÇ›ÇΔéóǃǢNjÇ∑
  • ìÒéüäÑÇËçûÇ›ÇÕíxâÑÉ^ÉXÉNÅiDeferred TaskÅjÇΔéóǃǢNjÇ∑
  • É^ÉXÉNÇÕÉVÉXÉeÉÄÉ^ÉXÉNÅiSystem TaskÅjÇΔéóǃǢNjÇ∑
  • É\ÉtÉgÉEÉFÉAäÑÇËçûÇ›ÇÕÉTÉ|Å[ÉgÇ≥ÇÍǃǢNjÇπÇÒ

ǵǩǵǻǙÇÁÅAñæämÇ…ãÊï Ç∑ÇÈïKóvÇÃdžÇÈèÍçáLJdžÇËÇ‹Ç∑ÅB


íê:
ÉlÉCÉeÉBÉuÉfÉoÉCÉXÉhÉâÉCÉoÇÃé¿çsÉåÉxÉãÇÃè⁄ç◊DžǬǢǃÇÕÅADesigning PCI Cards and Drivers for Power Macintosh Computers Çà 67 ÉyÅ[ÉWÇéQèΔǵǃÇ≠ÇæÇ≥Ç¢ÅB



èdóv:
DZDZÇ≈ÇÕ PowerPC ÇÃÉlÉCÉeÉBÉuÇ»äÑÇËçûÇ›ÉÅÉJÉjÉYÉÄDžǬǢǃÇÕê‡ñæÇµÇ‹ÇπÇÒÅBMac OS 9 Ç‹Ç≈Çà Mac OS Ç™ìÆçÏÇ∑ÇÈ PowerPC Macintosh ÉRÉìÉsÉÖÅ[É^Ç≈ÇÕÅAPowerPC ÇÃÉlÉCÉeÉBÉuÇ»äÑÇËçûÇ›èàóùÇÕÉiÉmÉJÅ[ÉlÉãÇ™çsÇ¢ÅAäÑÇËçûÇ›ÇÕ 68K ÉGÉ~ÉÖÉåÅ[É^Ç…ì]ëóÇ≥ÇÍÇ‹Ç∑ÅBDZÇÃÉeÉNÉjÉJÉãÉmÅ[ÉgÇ≈ 68K å≈óLÇÃäTîOÇê‡ñæÇµÇΩèÍÅAPowerPC ÉvÉçÉZÉbÉTÇìãç⁄ǵÇΩÉ}ÉVÉìÇ≈LJÅAPowerPC ÇÃí·ÉåÉxÉãÇÃÉVÉXÉeÉÄÉ\ÉtÉgÉEÉFÉAÇ™ìØÇ∂ìÆçÏÇÉGÉ~ÉÖÉåÅ[ÉgǵǃǢÇÈÅAÇΔçlǶǃç∑ǵéxǶdžÇËÇ‹ÇπÇÒÅB



èdóv:
é¿çsÉåÉxÉãÇÕÅAÉvÉçÉZÉbÉTÇÃäÑÇËçûÇ›É}ÉXÉNÅi680x0 SR ÉåÉWÉXÉ^Ç…ï€ë∂Ç≥ÇÍÇΩílÅjÇΔÇÕìΔóßǵǃǢNjÇ∑ÅBÉvÉçÉZÉbÉTÇÃäÑÇËçûÇ›É}ÉXÉNÇ…ÇÊÇÈÅAäÑÇËçûÇ›éûÇ≈džÇÈǩǫǧǩÇÃîªífÇÕê≥ämÇ≈ÇÕdžÇËÇ‹ÇπÇÒÅBè⁄ǵÇ≠ÇÕé¿çsÉåÉxÉãÇÃéÊìæï˚ñ@ÇÇ≤óóâ∫Ç≥Ç¢ÅB



DZÇÃêflÇ≈ÇÕÅAǪÇÍǺÇÍÇÃé¿çsÉåÉxÉãDžǬǢǃè⁄ǵÇ≠ê‡ñæÇµÇ‹Ç∑ÅB



ÉnÅ[ÉhÉEÉFÉAäÑÇËçûÇ›

DZÇÃÉåÉxÉãÇÃíËã`

ÉnÅ[ÉhÉEÉFÉAäÑÇËçûÇ›ÉåÉxÉãÇÃé¿çsÇÕÅAÉnÅ[ÉhÉEÉFÉAäÑÇËçûÇ›óvãÅÇÃíºê⁄ÇÃåãâ ÇΔǵǃãNDZÇËÇ‹Ç∑ÅBÉnÅ[ÉhÉEÉFÉAäÑÇËçûÇ›ÉåÉxÉãÇ≈é¿çsÇ≥ÇÍÇÈÉ\ÉtÉgÉEÉFÉAÇ…ÇÕÅAÉAÉbÉvÉãÇ™íÒãüÇ∑ÇÈäÑÇËçûÇ›ÉnÉìÉhÉâÇæÇØÇ≈Ç»Ç≠ÅANuBus Ç‚ëºÇÃÉfÉoÉCÉXÇÃÉCÉìÉXÉgÅ[Éãâ¬î\äÑÇËçûÇ›ÉnÉìÉhÉâLJä‹Ç‹ÇÍÇ‹Ç∑ÅB

DZÇÃÉåÉxÉãÇ…ì¸ÇÈï˚ñ@

ÉnÅ[ÉhÉEÉFÉAäÑÇËçûÇ›ÉåÉxÉãÇ…ì¸ÇÈÇ…ÇÕÅAÉnÅ[ÉhÉEÉFÉAäÑÇËçûÇ›ÉnÉìÉhÉâÇÉCÉìÉXÉgÅ[Éãǵǃíºê⁄ÅAåƒÇ—èoÇ≥ÇÍÇÈèÍçáÅiSIntInstall Ç‹ÇΩÇÕÉçÅ[ÉÅÉÇÉäÇÃäÑÇËçûÇ›ÉxÉNÉ^ÉeÅ[ÉuÉãÇïœçXǵǃÉCÉìÉXÉgÅ[ÉãÇ≥ÇÍÇΩ NuBus ÉnÉìÉhÉâÅjÇΔÅAÉnÅ[ÉhÉEÉFÉAäÑÇËçûÇ›ÉnÉìÉhÉâÇ©ÇÁä‘ê⁄ìIÇ…åƒÇ—èoÇ≥ÇÍÇÈèÍçáÅiSCSI Manager 4.3 ÇÃäÆóπÉãÅ[É`ÉìÅjÇΔǙdžÇËÇ‹Ç∑ÅBTime Manager É^ÉXÉNÇ‚ VBL LJÉnÅ[ÉhÉEÉFÉAäÑÇËçûÇ›ÉåÉxÉãÇ≈é¿çsÇ≥ÇÍÇ‹Ç∑ÇÃÇ≈íçà”ǵǃÇ≠ÇæÇ≥Ç¢ÅB

ä¬ã´ÇÃêßñÒ

ÉnÅ[ÉhÉEÉFÉAäÑÇËçûÇ›ÇÕÅAÉcÅ[ÉãÉ{ÉbÉNÉXÅAâºëzÉÅÉÇÉäÅAOpen Transport Ç≈íËã`Ç≥ÇÍÇÈÅuäÑÇËçûÇ›ÉåÉxÉãÅvÇ…äYìñǵNjÇ∑ÅBDZÇÍÇÁÇÃêßñÒDžǬǢǃÇÕëºÇÃï∂èëÇ≈ãLèqÇ≥ÇÍǃǢÇÈé¿çsÉåÉxÉãÇ≈ê‡ñæÇµÇ‹Ç∑ÅB

Ç≥ÇÁÇ…ÅAÉnÅ[ÉhÉEÉFÉAäÑÇËçûÇ›ÉåÉxÉãÇ≈ÇÕÅAÇ≈Ç´ÇÈÇæÇØé¿çséûä‘ÇíZÇ≠ÇµÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅBÉnÅ[ÉhÉEÉFÉAäÑÇËçûÇ›ÉåÉxÉãÇ≈ÇÕÅAdžÇÈÉnÅ[ÉhÉEÉFÉAäÑÇËçûÇ›ÉnÉìÉhÉâÇÃé¿çsíÜÇ…ÇÕÅAǪÇÍÇÊÇËóDêÊèáà ÇÃí·Ç¢äÑÇËçûÇ›ÇÕÇ∑Ç◊ǃã÷é~Ç≥ÇÍÇ‹Ç∑ÅBÉnÅ[ÉhÉEÉFÉAäÑÇËçûÇ›ÉnÉìÉhÉâÇÃé¿çséûä‘Ç™í∑Ç≠Ç»ÇÈÇΔÅAǪÇÍÇæÇØÉRÉìÉsÉÖÅ[É^ÇÃäÑÇËçûÇ›íxâÑÇ™ëÂÇ´Ç≠Ç»ÇËÇ‹Ç∑ÅBäÑÇËçûÇ›íxâÑÇ™ëÂÇ´Ç≠Ç»ÇÈÇΔÅAâπê∫Ç™ÇΔǨÇÍÇΩÇËÅAÉJÅ[É\ÉãÇÃÉgÉâÉbÉLÉìÉOǙDžǑÇ≠Ç»ÇÈǻǫÅAÉÜÅ[ÉUÇ…à´âeãøÇó^ǶNjÇ∑ÅBäÑÇËçûÇ›éûÇ…ëΩÇ≠ÇÃèàóùÇïKóvÇΔÇ∑ÇÈèÍçáÇÕÅADTInstall Ç≈íxâÑÉ^ÉXÉNÇÉXÉPÉWÉÖÅ[ÉãǵǃÇ≠ÇæÇ≥Ç¢ÅB

ÉyÅ[ÉWÉìÉOÇÃà¿ëSê´

ÉnÅ[ÉhÉEÉFÉAäÑÇËçûÇ›ÉåÉxÉãÇÃÉyÅ[ÉWÉìÉOÇÕÅADeferUserFn Ç≈äÑÇËçûÇ›ÇíxÇÁÇπǻǢǩǨÇËÅAà¿ëSÇ≈ÇÕdžÇËÇ‹ÇπÇÒÅBÉVÉXÉeÉÄÇÃäÑÇËçûÇ›ÉnÉìÉhÉâÇÃǻǩDžÇÕÅiDevice Manager äÆóπÉãÅ[É`ÉìÅAVBLÅAÉXÉçÉbÉg VBLÅATime Manager É^ÉXÉNÅjÅAâºëzÉÅÉÇÉäÇ™ìÆçÏǵǃLJà¿ëSÇ…Ç»ÇÈÇ‹Ç≈é©ìÆìIÇ…èàóùÇíxÇÁÇπÇÈLJÇÃLJdžÇËÇ‹Ç∑Ç™ÅAǪÇÃëºÇÃÉnÅ[ÉhÉEÉFÉAäÑÇËçûÇ›ÉnÉìÉhÉâÇÕÅAÉyÅ[ÉWÉtÉHÉãÉgÇãNDZÇ≥ǻǢÇÊǧï€èÿÇµÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅBÉyÅ[ÉWÉtÉHÉãÉgÇãNDZÇ∑â¬î\ê´ÇÃdžÇÈÉÅÉÇÉäÇ…ÉAÉNÉZÉXÇ∑ÇÈïKóvǙdžÇÈèÍçáÇÕÅADeferUserFn Ç≈èàóùÇíxÇÁÇπÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅB



íê:
DeferUserFn ÇΔ DTInstall ÇÕç¨óêÇ≥ÇπǻǢÇ≈â∫Ç≥Ç¢ÅBëOé“ÇÕÉpÅ[ÉWÉìÉOÇ™à¿ëSÇ…Ç»ÇÈÇ‹Ç≈ÉnÅ[ÉhÉEÉFÉAäÑÇËçûÇ›ÇíxâÑǵNjÇ∑Ç™ÅAå„é“ÇÕíxâÑÉ^ÉXÉNÅiDeferred TaskÅjÇäÑÇËçûǛǙâ¬î\Ç…Ç»ÇÈÇ‹Ç≈íxâÑÇ∑ÇÈLJÇÃÇ≈Ç∑ÅB



íxâÑÉ^ÉXÉNÅiDeferred TaskÅj

DZÇÃÉåÉxÉãÇÃíËã`

íxâÑÉ^ÉXÉNÅiDeferred TaskÅjÇΔÇÕÅAÉnÅ[ÉhÉEÉFÉAäÑÇËçûÇ›ÉåÉxÉãÇÃÉRÅ[ÉhÇ™ÅAäÑÇËçûÇ›â¬î\èÛë‘Ç…ñflǵÇΩå„ÅAǪÇÃäÑÇËçûǛǩÇÁñflÇÈëOÇ…é¿çsÇ∑Ç◊Ç´ÉãÅ[É`ÉìÇÉXÉPÉWÉÖÅ[ÉãÇ∑ÇÈǵÇ≠Ç›Ç≈Ç∑ÅBÉnÅ[ÉhÉEÉFÉAäÑÇËçûÇ›ÉnÉìÉhÉâÇÕÅAÉnÉìÉhÉâé©êgÇÃíÜÇ≈é¿çsÇ≥ÇÍÇÈéûä‘Çç≈è¨Ç…ǵǃÅAÉVÉXÉeÉÄÇÃäÑÇËçûÇ›íxâÑÇç≈è¨Ç…Ç∑ÇÈÇΩÇflÅADZÇÃï˚ñ@ÇéÊÇËÇ‹Ç∑ÅB

DZÇÃÉåÉxÉãÇ…ì¸ÇÈï˚ñ@

íxâÑÉ^ÉXÉNÉåÉxÉãÇ…ì¸ÇÈç≈LJàÍî ìIÇ»ï˚ñ@ÇÕÅAÉnÅ[ÉhÉEÉFÉAäÑÇËçûÇ›ÉnÉìÉhÉâÇ©ÇÁ DTInstall Çé¿çsÇ∑ÇÈDZÇΔÇ≈Ç∑ÅBäÑÇËçûÇ›èàóùÉVÉXÉeÉÄÇÕÅAǪÇÃäÑÇËçûǛǩÇÁñflÇÈíºëOÅAÇΩÇæÇµçƒÇ—äÑÇËçûÇ›â¬î\DžǻǡÇΩå„Ç…ÅAíxâÑÉ^ÉXÉNÇé¿çsǵNjÇ∑ÅB

íxâÑÉ^ÉXÉNÉåÉxÉãÇ≈é¿çsÇ≥ÇÍǃǢÇÈÉRÅ[ÉhÇ©ÇÁä‘ê⁄ìIÇ…åƒÇ—èoÇ≥ÇÍǃÅAíxâÑÉ^ÉXÉNÉåÉxÉãÇ…ì¸ÇÈèÍçáǙdžÇËÇ‹Ç∑ÅBDZÇÃÇÊÇ¢ó·ÇÕÅAOpen Transport ÇÃí ímä÷êîÇ≈ÅADZÇÍÇÕǵnjǵnjíxâÑÉ^ÉXÉNÉåÉxÉãÇ©ÇÁåƒÇ—èoÇ≥ÇÍÇ‹Ç∑ÅB

ä¬ã´ÇÃêßñÒ

íxâÑÉ^ÉXÉNÇÕÅAÉcÅ[ÉãÉ{ÉbÉNÉXÇ‚âºëzÉÅÉÇÉäÇ≈íËã`Ç≥ÇÍÇÈÅuäÑÇËçûÇ›ÉåÉxÉãÅvÇ…äYìñǵNjÇ∑ÅBDZÇÍÇÁÇÃêßñÒDžǬǢǃÇÕëºÇÃï∂èëÇ≈ãLèqÇ≥ÇÍǃǢÇÈé¿çsÉåÉxÉãÇ≈ê‡ñæÇµÇ‹Ç∑ÅB

ÉyÅ[ÉWÉìÉOÇÃà¿ëSê´

íxâÑÉ^ÉXÉNÉåÉxÉãÇ≈ÇÕÅAÉyÅ[ÉWÉìÉOÇÕà¿ëSÇ≈Ç∑ÅB

Special Considerations

íxâÑÉ^ÉXÉNÇÃLJǧǖÇΔǬÇÃóòì_ÇÕÅAèáÇ…é¿çsÇ≥ÇÍÇÈDZÇΔÇ≈Ç∑ÅBÉVÉXÉeÉÄÇÕÅAdžÇÈíxâÑÉ^ÉXÉNÇÃé¿çsÇíÜífǵǃëºÇÃíxâÑÉ^ÉXÉNÇé¿çsÇ∑ÇÈDZÇΔÇÕǵNjÇπÇÒÅBDZÇÍÇÕï÷óòÇ»îrëºêßå‰ã@ç\ÇΔǵǃégǶNjÇ∑ÅB



ÉVÉXÉeÉÄÉ^ÉXÉNÅiSystem TaskÅj

DZÇÃÉåÉxÉãÇÃíËã`

ÉVÉXÉeÉÄÉ^ÉXÉNÅiSystem TaskÅjÉåÉxÉãÇÕÅALJǡÇΔLJàÍî ìIÇ»ÉAÉvÉäÉPÅ[ÉVÉáÉìÉRÅ[ÉhÇ™é¿çsÇ≥ÇÍÇÈÉåÉxÉãÇ≈Ç∑ÅB

DZÇÃñºëOÇÕ Macintosh ÇÃå√Ç¢ÉVÉXÉeÉÄÉRÅ[Éã SystemTask Ç™óRóàÇ≈Ç∑ÅBMultiFinderÅiç°Ç≈ÇÕ Process Manager ÇΔåƒÇŒÇÍǃǢNjÇ∑ÅjÇ™ìoèÍÇ∑ÇÈëOÇÕÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕÅAíËä˙ìIÇ… SystemTask ÇåƒÇ—èoǵǃÅAäÑÇËçûÇ›éûÇ…ÇÕé¿çsÇ≈ǴǻǢèàóùÇçsǧÇΩÇflÅAÉfÉoÉCÉXÉhÉâÉCÉoÇ™é¿çsÇ≈Ç´ÇÈÇÊǧDžÇ∑ÇÈïKóvǙdžÇËNjǵÇΩÅB



íê:
åªç›ÅASystemTask ÇÕïsóvÇ≈Ç∑ÅBWaitNextEvent Ç™é©ìÆìIÇ…åƒÇ—èoǵǃÇ≠ÇÍÇ‹Ç∑ÅB



DZÇÃÉåÉxÉãÇ…ì¸ÇÈï˚ñ@

ÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃÉÅÉCÉìÉGÉìÉgÉäÉ|ÉCÉìÉgÇÕÉVÉXÉeÉÄÉ^ÉXÉNÉåÉxÉãÇ≈åƒÇ—èoÇ≥ÇÍÇ‹Ç∑ÅBã¶í≤ÉXÉåÉbÉhÇΔǵǃÉXÉPÉWÉÖÅ[ÉãÇ≥ÇÍÇΩ Thread Manager ÇÃÉXÉåÉbÉhLJÉVÉXÉeÉÄÉ^ÉXÉNÉåÉxÉãÇ≈é¿çsÇ≥ÇÍÇ‹Ç∑ÅBǪÇÃëºÇÃÉRÅ[ÉhDžǬǢǃÇÕÅATechnote 1033: Interrupts in Need of (a Good) Time Ç…ÅAäÑÇËçûÇ›ÉåÉxÉãÇ©ÇÁÉVÉXÉeÉÄÉ^ÉXÉNÉåÉxÉãÇ…ì¸ÇÈï˚ñ@Ç™ê‡ñæÇ≥ÇÍǃǢNjÇ∑ÅB

ä¬ã´ÇÃêßñÒ

ÉVÉXÉeÉÄÉ^ÉXÉNÉåÉxÉãÇ≈ìÆçÏÇ∑ÇÈÉRÅ[ÉhÇÕÅAÇ«ÇÃä¬ã´Ç…ǮǢǃLJÅuäÑÇËçûÇ›ÉåÉxÉãÅvÇ≈ÇÕdžÇËÇ‹ÇπÇÒÅBÉVÉXÉeÉÄÉ^ÉXÉNÉåÉxÉãÇ≈ÇÕéñé¿è„âΩÇ≈LJÇ≈Ç´Ç‹Ç∑ÅB

ÉyÅ[ÉWÉìÉOÇÃà¿ëSê´

ÉfÉtÉHÉãÉgÇ≈ÇÕÉVÉXÉeÉÄÉ^ÉXÉNÉåÉxÉãÇ≈ÇÕÉyÅ[ÉWÉìÉOÇÕà¿ëSÇ≈Ç∑ÅBó·äOÇÕÅAÉVÉXÉeÉÄÇ™ÉyÅ[ÉWÉìÉOÇÃÉTÉ|Å[ÉgÇÃÇΩÇflÇ…ïKóvÇΔÇ∑ÇÈÉäÉ\Å[ÉXÇ…ÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃÉRÅ[ÉhÇ™ÉAÉNÉZÉXÇ∑ÇÈèÍçáÇ≈Ç∑ÅBÇΩÇΔǶnjÅASCSIGet Çégǡǃ SCSI ÉoÉXÇêËóLǵÇΩèÍçáÇÕÅAÉVÉXÉeÉÄÉ^ÉXÉNÉåÉxÉãÇ≈džǡǃLJÉyÅ[ÉWÉtÉHÉãÉgÇãNDZǵǃÇÕÇ»ÇËÇ‹ÇπÇÒÅB



ÉlÉCÉeÉBÉuÉnÅ[ÉhÉEÉFÉAäÑÇËçûÇ›

DZÇÃÉåÉxÉãÇÃíËã`

ÉlÉCÉeÉBÉuÉnÅ[ÉhÉEÉFÉAäÑÇËçûÇ›ÉåÉxÉãÇÕÅAÉlÉCÉeÉBÉuÉhÉâÉCÉoÉAÅ[ÉLÉeÉNÉ`ÉÉÇÃÉ}ÉVÉìÇ…ÇÃÇ›ë∂ç›Ç∑ÇÈÇΔǢǧì_ÇèúÇØÇŒÅAïÅí ÇÃÉnÅ[ÉhÉEÉFÉAäÑÇËçûÇ›ÉåÉxÉãÇΔìØàÍÇ≈Ç∑ÅB



íê:
DZDZÇ≈ÅuÉlÉCÉeÉBÉuÅvÇΔǢǧÇÃÇÕÅAÉlÉCÉeÉBÉuÇ»äÑÇËçûÇ›èàóùÇÃDZÇΔÇǢǡǃǢÇÈÇÃÇ≈ÇÕǻǢÇÃÇ≈íçà”ǵǃÇ≠ÇæÇ≥Ç¢ÅBMac OS 9 Ç‹Ç≈ÇÃä¬ã´Ç≈ÇÕÅA68K ÇÃäÑÇËçûÇ›óDêÊèáà Çï€èÿǵÇΩÇËÅA68K ÇÃñΩóflÇ™äÑÇËçûÇ‹ÇÍÇÈDZÇΔÇÃǻǢÇÊǧÅAÉiÉmÉJÅ[ÉlÉãÇ™Ç∑Ç◊ǃÇÃäÑÇËçûÇ›Ç 68K ÉGÉ~ÉÖÉåÅ[É^Ç÷ì]ëóǵNjÇ∑ÅBǵÇΩǙǡǃÅAÉlÉCÉeÉBÉuäÑÇËçûÇ›ÇΔǢǶǫLJÅAÉ~ÉbÉNÉXÉÇÅ[ÉhÉXÉCÉbÉ`ÇÃëŒè€ÇΔÇ»ÇËÇ‹Ç∑ÅB



DZÇÃÉåÉxÉãÇ…ì¸ÇÈï˚ñ@

ÉlÉCÉeÉBÉuÉnÅ[ÉhÉEÉFÉAäÑÇËçûÇ›ÉåÉxÉãÇ…ì¸ÇÈÇÃÇÕÅAÉlÉCÉeÉBÉuÇ»äÑÇËçûÇ›ÇÃèàóùÇíSìñÇ∑ÇÈ Interrupt Manager Ç≈ÉnÅ[ÉhÉEÉFÉAäÑÇËçûÇ›ÉnÉìÉhÉâÇÉCÉìÉXÉgÅ[ÉãÇ∑ÇÈÇ©ÅADZÇÃÇÊǧǻÉnÉìÉhÉâÇ©ÇÁíºê⁄åƒÇ—èoÇ≥ÇÍÇΩÉRÅ[ÉhÇ©ÇÁåƒÇŒÇÍÇÈèÍçáÇ≈Ç∑ÅB

ä¬ã´ÇÃêßñÒ

ÉlÉCÉeÉBÉuÉnÅ[ÉhÉEÉFÉAäÑÇËçûÇ›ÇÕÅAÉcÅ[ÉãÉ{ÉbÉNÉXÅAâºëzÉÅÉÇÉäÅAOpen Transport Ç≈íËã`Ç≥ÇÍÇÈÅuäÑÇËçûÇ›ÉåÉxÉãÅvÇ…äYìñǵNjÇ∑ÅBDZÇÍÇÁÇÃêßñÒDžǬǢǃÇÕëºÇÃï∂èëÇ≈ãLèqÇ≥ÇÍǃǢÇÈé¿çsÉåÉxÉãÇ≈ê‡ñæÇµÇ‹Ç∑ÅB

è]óàÇÃÉnÅ[ÉhÉEÉFÉAäÑÇËçûÇ›ÇΔìØólÅAÉlÉCÉeÉBÉuÉnÅ[ÉhÉEÉFÉAäÑÇËçûÇ›ÉåÉxÉãÇ≈LJìÆçÏéûä‘Çç≈è¨Ç…ÇµÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅBÉlÉCÉeÉBÉuÉnÅ[ÉhÉEÉFÉAäÑÇËçûÇ›ÇÃâûìöèàóùÇí∑Ç≠Ç∑ÇÈïKóvǙdžÇÈèÍçáÇÕÅAQueueSecondaryInterruptHandler Ç≈ìÒéüäÑÇËçûÇ›ÇÉXÉPÉWÉÖÅ[ÉãǵǃÇ≠ÇæÇ≥Ç¢ÅB

ÉyÅ[ÉWÉìÉOÇÃà¿ëSê´

ÉlÉCÉeÉBÉuÉnÅ[ÉhÉEÉFÉAäÑÇËçûÇ›ÉåÉxÉãÇ≈ÇÕÉyÅ[ÉWÉìÉOÇÕà¿ëSÇ≈ÇÕdžÇËÇ‹ÇπÇÒÅB



ìÒéüäÑÇËçûÇ›

DZÇÃÉåÉxÉãÇÃíËã`

ÉlÉCÉeÉBÉuÉhÉâÉCÉoÉÇÉfÉãÇ…ÇÕìÒéüäÑÇËçûǛǙdžÇËÇ‹Ç∑ÅBè]óàÇÃíxâÑÉ^ÉXÉNÇΔìØólÅAÉlÉCÉeÉBÉuÉhÉâÉCÉoÇ™ï°éGÇ»èàóùÇå„âÒǵDžǵǃÅAäÑÇËçûÇ›íxâÑÇç≈è¨Ç…Ç∑ÇÈÇΩÇflÇÃLJÇÃÇ≈Ç∑ÅB

DZÇÃÉåÉxÉãÇ…ì¸ÇÈï˚ñ@

ìÒéüäÑÇËçûÇ›ÉåÉxÉãÇ…ì¸ÇÈÇ…ÇÕÅAQueueSecondaryInterruptHandler ÇégǡǃìÒéüäÑÇËçûÇ›ÉnÉìÉhÉâÇÉXÉPÉWÉÖÅ[ÉãÇ∑ÇÈÇ©ÅAǪÇÃÇÊǧǻÉnÉìÉhÉâÇ©ÇÁåƒÇ—èoÇ≥ÇÍÇÈèÍçáÇ≈Ç∑ÅBìÒéüäÑÇËçûÇ›ÇÕäÑÇËçûǛǙâ¬î\DžǻǡÇΩíºå„ÅAíxâÑÉ^ÉXÉNÅiDeferred TaskÅjÇ™é¿çsÇ≥ÇÍÇÈëOÅAǪǵǃÅAäÑÇËçûÇ›ÉnÉìÉhÉâÇ™ï‘ÇÈëOÇ…é¿çsÇ≥ÇÍÇ‹Ç∑ÅB

CallSecondaryInterruptHandler2 ÇégǡǃÅAìÒéüäÑÇËçûÇ›ÉnÉìÉhÉâÇÉ^ÉXÉNÉåÉxÉãÇ©ÇÁåƒÇ—èoÇ∑DZÇΔLJÇ≈Ç´Ç‹Ç∑ÅB

ä¬ã´ÇÃêßñÒ

ìÒéüäÑÇËçûÇ›ÇÕÅAÉcÅ[ÉãÉ{ÉbÉNÉXÅAâºëzÉÅÉÇÉäÅAOpen Transport Ç≈íËã`Ç≥ÇÍÇÈÅuäÑÇËçûÇ›ÉåÉxÉãÅvÇ…äYìñǵNjÇ∑ÅBDZÇÍÇÁÇÃêßñÒDžǬǢǃÇÕëºÇÃï∂èëÇ≈ãLèqÇ≥ÇÍǃǢÇÈé¿çsÉåÉxÉãÇ≈ê‡ñæÇµÇ‹Ç∑ÅB

ÉyÅ[ÉWÉìÉOÇÃà¿ëSê´

ìÒéüäÑÇËçûÇ›ÉåÉxÉãÇ≈ÇÕÉyÅ[ÉWÉìÉOÇÕà¿ëSÇ≈ÇÕdžÇËÇ‹ÇπÇÒÅB



É^ÉXÉN

DZÇÃÉåÉxÉãÇÃíËã`

Mac OS 9 Ç‹Ç≈ÇÃÉlÉCÉeÉBÉuÉhÉâÉCÉoÉÇÉfÉãÇÕÅAÉlÉCÉeÉBÉuÉnÅ[ÉhÉEÉFÉAäÑÇËçûÇ›ÉåÉxÉãÇ≈LJǻÇ≠ÅAìÒéüäÑÇËçûÇ›ÉåÉxÉãÇ≈LJǻǢÉRÅ[ÉhÇÉ^ÉXÉNÉåÉxÉãÇΔíËã`ǵNjÇ∑ÅB

DZÇÃÉåÉxÉãÇ…ì¸ÇÈï˚ñ@

É^ÉXÉNÉåÉxÉãÇ≈é¿çsÇ≥ÇÍÇÈÉRÅ[ÉhÇÕÅAÇŸÇΔÇÒÇ«ÇÃèÍçáÅAïWèÄÇÃÉVÉXÉeÉÄÉ^ÉXÉNÉåÉxÉãÅAǬNjÇËí èÌÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÉRÅ[ÉhÇ≈Ç∑ÅBǵǩǵÅAè]óàÇÕäÑÇËçûÇ›ÉåÉxÉãÇΔÇ≥ÇÍǃǢÇΩÅAÉlÉCÉeÉBÉuà»äOÇÃÉnÅ[ÉhÉEÉFÉAäÑÇËçûǛǂíxâÑÉ^ÉXÉNǻǫÇÃé¿çsÉåÉxÉãLJÅAÉ^ÉXÉNÉåÉxÉãÇ…Ç»ÇËÇ‹Ç∑ÅBMac OS 9 Ç‹Ç≈ÇÕÅAÉlÉCÉeÉBÉuäÑÇËçûǛNjÇΩÇÕìÒéüäÑÇËçûÇ›ÉåÉxÉãà»äOÇÃÉRÅ[ÉhÇÕÇ∑Ç◊ǃÉ^ÉXÉNÉåÉxÉãÇæÇ©ÇÁÇ≈Ç∑ÅB

ä¬ã´ÇÃêßñÒ

É^ÉXÉNÉåÉxÉãä¬ã´ÇÃêßñÒÇÕÅAè]óàÇÃÇ«ÇÃÉåÉxÉãÇ≈é¿çsÇ≥ÇÍǃǢÇΩÇ©Ç≈åàÇ‹ÇËÇ‹Ç∑ÅB

ÉyÅ[ÉWÉìÉOÇÃà¿ëSê´

ÉlÉCÉeÉBÉuÉhÉâÉCÉoÉÇÉfÉãÇ≈ÇÕÅAÉ^ÉXÉNÉåÉxÉãÇ…Ç®ÇØÇÈÉyÅ[ÉWÉìÉOÇÕèÌÇ…à¿ëSÇ≈Ç∑ÅBǵǩǵÅAǪÇÍà»äOÇà Mac OS Ç≈ÇÕÅAÉyÅ[ÉWÉìÉOÇÕè]óàÇÃÇ«ÇÃÉåÉxÉãÇ≈é¿çsÇ≥ÇÍǃǢÇΩÇ©Ç≈à¿ëSǩǫǧǩǙåàÇ‹ÇËÇ‹Ç∑ÅB



É\ÉtÉgÉEÉFÉAäÑÇËçûÇ›

DZÇÃÉåÉxÉãÇÃíËã`

ÉlÉCÉeÉBÉuÉhÉâÉCÉoÉÇÉfÉãÇÕÉ\ÉtÉgÉEÉFÉAäÑÇËçûÇ›ÅiÉ^ÉXÉNÇǪÇÃÉ^ÉXÉNÇÃä¬ã´ì‡Ç≈ã≠êßìIÇ…é¿çsÇ≥ÇπÇÈã@î\ÅjÇíËã`ǵǃǢNjÇ∑ÅBDZÇÍÇÕàÍå©ìÒéüäÑÇËçûÇ›ÉåÉxÉãÇΔìØÇ∂ÇÊǧDžå©Ç¶Ç‹Ç∑Ç™ÅAàŸÇ»ÇÈã@î\Ç≈Ç∑ÅB

DZÇÃÉåÉxÉãÇ…ì¸ÇÈï˚ñ@

É\ÉtÉgÉEÉFÉAäÑÇËçûÇ›ÇÕ Mac OS Ç≈ÇÕÉTÉ|Å[ÉgÇ≥ÇÍǃǢNjÇπÇÒÅBDZÇÍÇÕ Designing PCI Cards and Drivers for Power Macintosh Computers Çà 262 ÉyÅ[ÉWÇ≈ÇÕǡǴÇËèëÇ©ÇÍǃǢNjÇ∑ÅB

åªç› SendSoftwareInterrupt ÇÕìØÇ∂é¿çsÉåÉxÉãÇ≈ÉRÅ[ÉhÇåƒÇ—èoǵNjÇ∑ÅBè´óàÇÕäÑÇËçûÇ›éûÇ…é¿çsÇ≈ǴǻǢÉRÅ[ÉhÇã≠êßìIÇ…é¿çsÇ≥ÇπÇÈÇΩÇflÇ…égópÇ≈Ç´ÇÈÇÊǧDžǻÇÈǩLJǵÇÍÇ‹ÇπÇÒÅB

ó·Ç¶ÇŒÅAé¿çsÉåÉxÉãÇwÇ≈ SendSoftwareInterrupt ÇåƒÇ—èoÇ∑ÇΔÅAÉ\ÉtÉgÉEÉFÉAäÑÇËçûǛLJé¿çsÉåÉxÉãÇwÇ≈é¿çsÇ≥ÇÍÇ‹Ç∑ÅBǬNjÇËÅAåªç›Çà Mac OS Ç≈ÇÕégÇ¢ï®Ç…Ç»ÇÁǻǢÉVÉXÉeÉÄÉRÅ[ÉãÇ≈Ç∑ÅB

ä¬ã´ÇÃêßñÒ

É\ÉtÉgÉEÉFÉAäÑÇËçûÇ›ÇÃä¬ã´ÇÃêßñÒÇÕÅAè]óàÇÃÇ«ÇÃÉåÉxÉãÇ≈é¿çsÇ≥ÇÍǃǢÇΩÇ©Ç≈åàÇ‹ÇËÇ‹Ç∑ÅB

ÉyÅ[ÉWÉìÉOÇÃà¿ëSê´

ÉlÉCÉeÉBÉuÉhÉâÉCÉoÉÇÉfÉãÇ≈ÇÕÅAÉ\ÉtÉgÉEÉFÉAäÑÇËçûÇ›ÉåÉxÉãÇ…Ç®ÇØÇÈÉyÅ[ÉWÉìÉOÇÕèÌÇ…à¿ëSÇ≈Ç∑ÅB



íê:
ÉlÉCÉeÉBÉuÉhÉâÉCÉoÉÇÉfÉãÇÕ Copland ÇîOì™Ç…ǮǢǃê›åvÇ≥ÇÍNjǵÇΩÅBìØÇ∂ÉhÉâÉCÉoÇ™è]óàÇà Mac OS ÇΔ Copland ÇÃóºï˚Ç≈ìØÇ∂ÉoÉCÉiÉäÇ™é¿çsÇ≈Ç´ÇÈDZÇΔÇñ⁄ìIÇΔǵǃǢNjǵÇΩÅBDZÇÃDZÇΔÇé¿åªÇ∑ÇÈÇΩÇflÇ…ëΩÇ≠ÇÃãÍòJǙdžÇËNjǵÇΩÅB

è]óàÇà Mac OS Ç…Ç®ÇØÇÈÉlÉCÉeÉBÉuÉhÉâÉCÉoÉÇÉfÉãÇÃÉTÉ|Å[ÉgÇÕégópÇ…ëœÇ¶ÇÈÇÊǧǻLJÇÃÇ≈Ç∑Ç™ÅACopland ÇÃàÍïîÇÃã@î\ÇÕè]óàÇà Mac OS Ç…à⁄êAÇ∑ÇÈDZÇΔÇ™ïsâ¬î\Ç≈Ç∑ÅBDZÇÃàÍó·ÇΔǵǃÅAÉ\ÉtÉgÉEÉFÉAäÑÇËçûǛǙdžÇËÇ‹Ç∑Ç™ÅAÉ}ÉCÉNÉçÉJÅ[ÉlÉãÇÃê›åvÇëÂïùÇ…ïœçXǵǻǢÇΔDZÇÃã@î\ÇÕè]óàÇà Mac OS Ç≈ÇÕé¿åªÇ≈Ç´Ç‹ÇπÇÒÅB

Copland Ç™âflãéÇÃLJÇÃÇΔǻǡÇΩåªç›ÅAÉ\ÉtÉgÉEÉFÉAäÑÇËçûÇ›ÇÕ Copland ÇÃÅgç≠ê’ñ”í∞ÅhÇΔǵǃê∂Ç´écǡǃǢNjÇ∑ÅB



ÉgÉbÉvÇ…ñflÇÈ



ëºÇÃï∂èëÇ≈ãLèqÇ≥ÇÍǃǢÇÈé¿çsÉåÉxÉã

àÍî ìIÇ…ÅAà»â∫ÇÃé¿çsÉåÉxÉãÇÕÅuäÑÇËçûÇ›ÉåÉxÉãÅvÇ…äYìñǵNjÇ∑ÅB

  • ÉnÅ[ÉhÉEÉFÉAäÑÇËçûÇ›
  • íxâÑÉ^ÉXÉNÅiDeferred TaskÅj
  • ÉlÉCÉeÉBÉuÉnÅ[ÉhÉEÉFÉAäÑÇËçûÇ›
  • ìÒéüäÑÇËçûÇ›

ǵǩǵÅAÅuäÑÇËçûÇ›ÉåÉxÉãÅvÇÃíËã`ÇÕï∂å£Ç…ÇÊǡǃÅAî˜ñ≠Ç…àŸÇ»ÇËÇ‹Ç∑ÅBDZDZÇ≈ÇÕLJǡÇΔLJç¨óêÇÃå¥àˆÇΔÇ»ÇÈãLèqÇdžÇ∞ǃǢNjÇ∑ÅB

ÉcÅ[ÉãÉ{ÉbÉNÉX

è„ãLÇ≈íËã`Ç≥ÇÍÇÈÅuäÑÇËçûÇ›ÉåÉxÉãÅvÇ≈ÇÕÅAÇŸÇΔÇÒÇ«ÇÃÉcÅ[ÉãÉ{ÉbÉNÉXä÷êîÇÕégǶNjÇπÇÒÅB

ÉcÅ[ÉãÉ{ÉbÉNÉXä÷êîÇ™égǶǻǢóùóRÇÕólÅXÇ≈Ç∑ÅBó·Ç¶ÇŒÅAMemory Manager ÇÕÉOÉçÅ[ÉoÉãÇ»ÉfÅ[É^ç\ë¢ÇàµÇ¢Ç‹Ç∑ÇÃÇ≈ÅAäÑÇËçûÇ›éûÇ…åƒÇ—èoÇ∑DZÇΔÇÕà¿ëSÇ≈ÇÕdžÇËÇ‹ÇπÇÒÅBëΩÇ≠ÇÃä÷êîÇÕÉÅÉÇÉäÇà⁄ìÆÅ^ÉpÅ[ÉWÇ∑ÇÈÇÃÇ≈ÅAMemory Manager ÇåƒÇ—èoÇ∑ÇÃÇΔìØÇ∂åãâ Ç…Ç»ÇËÇ‹Ç∑ÅBFile Manager DždžÇÈÇÊǧǻìØä˙ìIÇ»ä÷êîÇÕç\ë¢è„égópÇ≈Ç´Ç‹ÇπÇÒÅBàÍïîÇÃä÷êîÅiReadDateTime ǻǫÅjÇÕé¿çsÇ∑ÇÈÇΩÇflÇ…äÑÇËçûÇ›ÇégǢNjÇ∑ÇÃÇ≈ÅAäÑÇËçûǛǙïsâ¬Ç»ä¬ã´Ç≈ÇÕégópÇ≈Ç´Ç‹ÇπÇÒÅB

ǬNjÇËÅAdžÇÈä÷êîÇ™ÉÅÉÇÉäÇà⁄ìÆÅ^ÉpÅ[ÉWǵǻǢǩÇÁÇΔåæÇ¡ÇƒÅAǪÇÃä÷êîÇäÑÇËçûÇ›éûÇ…åƒÇ—èoÇ∑DZÇΔÇ™à¿ëSÇæÇΔÇÕåæÇ¶Ç‹ÇπÇÒÅB

Virtual Memory Manager

Virtual Memory Manager Ç…ä÷Ç∑ÇÈï∂èë (Inside Macintosh: Memory ÇÃëÊ 3 èÕÇ®ÇÊÇ— Technote ME09: Coping with VM and Memory Mappings Ç…ÇÕÅAÅuäÑÇËçûÇ›éûÅvÇÃÉyÅ[ÉWÉtÉHÉãÉgÇÕãñÇ≥ÇÍǻǢÅAÇΔèëÇ©ÇÍǃǢNjÇ∑ÅBDZÇÃDZÇΔÇ©ÇÁÇΩÇΔǶnjÅADevice Manager ÇÃäÆóπÉãÅ[É`ÉìÇÕÅuäÑÇËçûÇ›éûÅvÇ≈džÇÈÇΩÇflÅAMacTCP äÆóπÉãÅ[É`ÉìÇ≈ÇÕÉyÅ[ÉWÉìÉOÇ™äÎåØÇ≈džÇÈÅAÇΔåÎâǵǃǢÇΩÉvÉçÉOÉâÉ}LJǢNjǵÇΩÅBDZÇÍÇ‹Ç≈ÇÃê‡ñæÇì«ÇflÇŒÅADZÇÃåÎâÇÕä»íPÇ…âÇØÇÈÇÕÇ∏Ç≈Ç∑ÅB

Virtual Memory Manager Ç…ä÷ǵǃÇÕÅAÅuäÑÇËçûÇ›éûÅvÇΔÇÕÅAâºëzÉÅÉÇÉäǪÇÃLJÇÃÇ‹ÇΩÇÕ DeferUserFn Ç≈å„âÒǵDžÇ≥ÇÍǃǢǻǢÉnÅ[ÉhÉEÉFÉAäÑÇËçûÇ›ÇÃDZÇΔÇ≈džÇËÅAǵÇΩǙǡǃÅAëºÇÃï∂èëÇ≈ÇÕé¿çsÉåÉxÉãÇ…ä÷ǵǃÅuäÑÇËçûÇ›éûÅvÇΔÇ≥ÇÍǃǢǃLJÅADevice Manager äÆóπÉãÅ[É`ÉìÇ≈ÉyÅ[ÉWÉtÉHÉãÉgÇãNDZǵǃLJà¿ëSÇ≈Ç∑ÅB

Mac OS 9 Ç‹Ç≈ÇÃâºëzÉÅÉÇÉäÉVÉXÉeÉÄDžǬǢǃÇÕ Technote 1094: Virtual Memory Application Compatibility ÇÇ≤óóâ∫Ç≥Ç¢ÅB

Open Transport

Open Transport ÇÃï∂èëÇ…ÇÕÅAOpen Transport ÇÕÅuäÑÇËçûÇ›éûÅvÇ…åƒÇ—èoǵǃÇÕÇ¢ÇØÇ»Ç¢ÇΔèëÇ©ÇÍǃǢÇÈÇΩÇflÅAç¨óêÇà¯Ç´ãNDZǵNjǵÇΩÅBDZÇÃà”ñ°ÇÕÅAOpen Transport ÇÕÉVÉXÉeÉÄÉ^ÉXÉNéûÇ‹ÇΩÇÕíxâÑÉ^ÉXÉNéûÇ…ÇÃÇ›åƒÇ—èoÇ∑DZÇΔÇ™Ç≈Ç´ÇÈÅAÇΔǢǧDZÇΔÇ»ÇÃÇ≈Ç∑ÅBǵÇΩǙǡǃÅAÉnÅ[ÉhÉEÉFÉAäÑÇËçûÇ›ÉåÉxÉãÅiÉlÅ[ÉeÉBÉuÉnÅ[ÉhÉEÉFÉAäÑÇËçûÇ›ÉåÉxÉãÅAìÒéüäÑÇËçûÇ›ÉåÉxÉãÅjÇ≈Ç»ÇØÇÍÇŒÅAí èÌÇÕÅuäÑÇËçûÇ›éûÅvÇΔçlǶÇÍÇÁÇÈÇÊǧǻé¿çsÉåÉxÉãÅiíxâÑÉ^ÉXÉNÅjÇ©ÇÁÇ≈LJÅAOpen Transport ÇåƒÇ—èoÇ∑DZÇΔÇÕÇ≈Ç´ÇÈÇÃÇ≈Ç∑ÅB

Open Transport ÇÃç≈êVÇÃãZèpï∂å£ÅiInside Macintosh: Networking with Open TransportÅjÇÕDZÇÃê‡ñæÇîΩâfǵǃǢNjÇ∑ÅBÇ≥ÇÁÇ…ÅAÇ«ÇÃÉVÉXÉeÉÄÉRÅ[ÉãǙǫÇÃé¿çsÉåÉxÉãÇ≈ÉTÉ|Å[ÉgÇ≥ÇÍǃǢÇÈÇ©ÅAè⁄ǵÇ≠âê‡Ç≥ÇÍǃǢNjÇ∑ÅB

ÉgÉbÉvÇ…ñflÇÈ

 

é¿çsÉåÉxÉãÇÃéÊìæï˚ñ@

åªç›ÇÃé¿çsÉåÉxÉãÇàÍî ìIÇ…éÊìæÇ∑ÇÈï˚ñ@ÇÕdžÇËÇ‹ÇπÇÒÅBÉvÉçÉOÉâÉÄÇèëÇ≠éûÇ…ÅAó\Çflé¿çsÉåÉxÉãÇímÇ¡ÇΩè„Ç≈èëÇ≠ïKóvǙdžÇËÇ‹Ç∑ÅBǵǩǵÅAì¡íËÇÃä¬ã´Ç…ǮǢǃÇÕÅAé¿çsÉåÉxÉãÇímÇÈéËíiÇÕdžÇËÇ‹Ç∑ÅBDZDZÇ≈ÇÕǪÇÃÉeÉNÉjÉbÉNÇΔé„ì_DžǬǢǃâê‡ÇµÇ‹Ç∑ÅB

äÑÇËçûÇ›ÇÃÉgÉâÉbÉLÉìÉOÇ…ÇÊÇÈé¿çsÉåÉxÉãÇÃîªíf

åªç›ÇÃé¿çsÉåÉxÉãÇîªífÇ∑ÇÈï˚ñ@ÇÃÇPǬÇΔǵǃÅAäÑÇËçûÇ›ÇÇ∑Ç◊ǃÉgÉâÉbÉLÉìÉOÇ∑ÇÈï˚ñ@ÅiÉäÉXÉgÇPÇéQèΔÅjǙdžÇËÇ‹Ç∑ÅB



 ÉäÉXÉgÇP äÑÇËçûÇ›ÇÃÉgÉâÉbÉLÉìÉOÇ…ÇÊÇÈé¿çsÉåÉxÉãÇÃîªíf

static SInt32 gMyInterruptDepth = 0;
                           
static void MyIOCompletion(ParmBlkPtr pb)
{
    (void) AddAtomic(1, &gMyInterruptDepth);
                           
    ... DZDZDžé¿çsÉRÅ[ÉhÇë}ì¸Ç∑ÇÈ ...
                           
    (void) AddAtomic(-1, &gMyInterruptDepth);
}
                           
static OSStatus MyCommonCode(void)
    // DZÇÃä÷êîÇÕäÑÇËçûÇ›éûÇ‚ÅAǪǧÇ≈ǻǢéûLJé¿çsÇ≥ÇÍÇ‹Ç∑
{
    if (gMyInterruptDepth == 0) {
        ... äÑÇËçûÇ›éûÇ…é¿çsâ¬î\Ç»ÉRÅ[Éh ...
    } else {
        ... ÉVÉXÉeÉÄÉ^ÉXÉNÉåÉxÉãÇÃÉRÅ[Éh ...
    }
}



èdóv:
ÉäÉXÉgÇPÇÃÉRÅ[ÉhÇÕÅAatomic Ç»ëÄçÏÇ…ÇÊǡǃ gMyInterruptCountDepth ÇïœçXǵNjÇ∑ÇÃÇ≈ÅAó·Ç¶äÑÇËçûǛǙdžǡǃLJÅAê≥ǵǢílÇ™ï€èÿÇ≥ÇÍÇ‹Ç∑ÅB



DZÇÃÉeÉNÉjÉbÉNÇÕÅAé©ï™ÇÃÉRÅ[ÉhÇ™åƒÇŒÇÍÇÈâ¬î\ê´ÇÃdžÇÈé¿çsÉåÉxÉãÇÇ∑Ç◊ǃîcà¨ÇµÇƒÇ¢ÇÈèÍçáÇ…óLå¯Ç≈Ç∑Ç™ÅAïsñæÇÃé¿çsÉåÉxÉãÇ≈åƒÇŒÇÍÇÈÇÊǧǻÉRÅ[ÉhÇ≈ÇÕégǶNjÇπÇÒÅBó·Ç¶ÇŒÅAÉfÉBÉXÉNÉhÉâÉCÉoÇà Prime ÉGÉìÉgÉää÷êîÇÕólÅXÇ»é¿çsÉåÉxÉãÇ≈åƒÇŒÇÍÇÈâ¬î\ê´Ç™Ç†ÇÈÇÃÇ≈ÅADZÇÃÉeÉNÉjÉbÉNÇÕégǶNjÇπÇÒÅB

äÑÇËçûÇ›É}ÉXÉNÇämîFÇ∑ÇÈ

68K ÇÃäÑÇËçûÇ›É}ÉXÉNÅi680x0 SR ÉåÉWÉXÉ^Çà 8Å`10 ÉrÉbÉgÅjÇ™É[Éçà»äOÇæÇΔÅAäÑÇËçûÇ›íÜÇ≈džÇÈÇΔä®à·Ç¢Ç≥ÇÍÇÈDZÇΔǙdžÇËÇ‹Ç∑ÅBDZÇÍÇÕä‘à·Ç¡ÇƒÇ¢Ç‹Ç∑ÅB

  • íxâÑÉ^ÉXÉNÅiDeferred TaskÅjÇ‚ìÒéüäÑÇËçûÇ›Çé¿çsíÜÇÃèÍçáÅAäÑÇËçûÇ›íÜÇ…äÑÇËçûÇ›É}ÉXÉNÇ™É[ÉçÇ…Ç»ÇÈDZÇΔǙdžÇËÇ‹Ç∑ÅB
  • ÉVÉXÉeÉÄÉ^ÉXÉNÅiSystem TaskÅjéûÇ≈LJÅAäÑÇËçûÇ›É}ÉXÉNÇ™É[Éçà»äOÇÃílÇΔÇ»ÇÈèÍçáǙdžÇËÇ‹Ç∑ÅBó·Ç¶ÇŒÅAEnqueue ǻǫÇÃãåÇ¢ÉRÅ[ÉhÇÕäÑÇËçûÇ›Çégópïsâ¬î\Ç…Ç∑ÇÈDZÇΔǙdžÇËÇ‹Ç∑ÅB

Open Transport

Open Transport ÇÕé¿çsÉåÉxÉãÇéÊìæÇ∑ÇÈÇΩÇflÇà APIÅiOTIsAtInterruptLevelÅAOTCanLoadLibrariesÅAOTCanMakeSyncCallÅjÇíÒãüǵǃǢNjÇ∑ÅBǵǩǵÅADZÇÍÇÁÇÃÉãÅ[É`ÉìÇÕ Open Transport ÇåƒÇ—èoǵǃLJó«Ç¢èÍçáÇÃǛDžégǶNjÇ∑ÅBãÔëÃìIÇ…ÇÕÅAà»â∫ÇÃèÍçáÇ…óòópÇ≈Ç´Ç‹Ç∑ÅB

  • ÉVÉXÉeÉÄÉ^ÉXÉNÅiSystem TaskÅjÇ©ÇÁåƒÇ—èoÇ∑èÍçá
  • íxâÑÉ^ÉXÉNÅiDeferred TaskÅjÇ©ÇÁåƒÇ—èoÇ∑èÍçá
  • OT Notifier Ç©ÇÁåƒÇ—èoÇ∑èÍçáÅiOT Notifier ÇÕíxâÑÉ^ÉXÉNÅiDeferred TaskÅjéûÇ…é¿çsǵNjÇ∑Åj
  • îCà”ÇÃäÑÇËçûÇ›éûÅiÇΩÇæÇµÅAíxâÑÉ^ÉXÉNÅiDeferred TaskÅjà»äOÇÃäÑÇËçûÇ›ÉãÅ[É`ÉìÇÕÇ∑Ç◊ǃ OTEnterInterrupt ÇΔ OTLeaveInterrupt ÇåƒÇ‘ÇΔåæÇ§ÉãÅ[ÉãÇ…éÁÇ¡ÇΩèÍçáÇÃÇ›Åj

è„ãLä÷êîÇ™ä‘à·Ç¡ÇΩílÇï‘Ç∑ó·ÇΔǵǃÅAìÒéüäÑÇËçûÇ›éûÇ… OTCanMakeSyncCall Çå√Ç¢ÉVÉXÉeÉÄÇ≈åƒÇ—èoÇ∑ÇΔÅAtrue Çï‘ǵNjÇ∑ÅI

ǬNjÇËÅAOpen Transport ÇÃä÷êîÇÕ Open Transport Çégǧï™Ç…ÇÕï÷óòÇæÇ™ÅAàÍî ìIÇ»âåàï˚ñ@Ç≈ÇÕdžÇËÇ‹ÇπÇÒÅB

CurrentExecutionLevel

PCI Power Macintosh ÉRÉìÉsÉÖÅ[É^Ç≈ìoèÍǵÇΩ DriverServicesLib ÇÕ CurrentExecutionLevel ÇΔÉãÅ[É`ÉìÇíÒãüǵNjÇ∑ÅBCurrentExecutionLevel ÇÕÉlÉCÉeÉBÉuÉhÉâÉCÉoÉÇÉfÉãì‡Ç…ǮǢǃÇÕê≥ǵǢåãâ Çï‘ǵNjÇ∑Ç™ÅAǪÇÃëºÇÃÉRÉìÉeÉLÉXÉgÇ≈ÇÕê≥ǵǢílÇï‘ǵNjÇπÇÒÅB

èâë„ CurrentExecutionLevel ÇÕÉäÉXÉgÇQÇÃÇÊǧǻÉAÉãÉSÉäÉYÉÄÇΔǻǡǃǢNjǵÇΩÅB



 ÉäÉXÉgÇQ èâë„ CurrentExecutionLevel ÇÃÉAÉãÉSÉäÉYÉÄÅB

if ÉlÉCÉeÉBÉuÉnÅ[ÉhÉEÉFÉAäÑÇËçûÇ›íÜÇÃèÍçá...
  return kHardwareInterruptLevel
else ìÒéüäÑÇËçûÇ›íÜÇÃèÍçáÇÕ...
  return kSecondaryInterruptLevel
else
  return kTaskLevel
end if



DZÇÃÉAÉãÉSÉäÉYÉÄÇÕ DriverServicesLib ÇÃíÒãüÇ∑ÇÈé¿çsÉåÉxÉãÇ…å¿Ç¡ÇƒÅAñ‚ëËÇ»Ç≠ìÆçÏǵNjÇ∑Ç™ÅAÉlÉCÉeÉBÉuÉhÉâÉCÉoÉÇÉfÉãäOÇÃé¿çsÉåÉxÉãÇ…ÇÕñ≥å¯Ç≈Ç∑ÅBó·Ç¶ÇŒÅAíxâÑÉ^ÉXÉNÅiDeferred TaskÅjÇ‚ Time Manager É^ÉXÉNì‡Ç©ÇÁèâë„ CurrentExecutionLevel ÇåƒÇ—èoÇ∑ÇΔÅAÉlÉCÉeÉBÉuÉhÉâÉCÉoÇ™é¿çsǵǃǢǻǢå¿ÇËÅAkTaskLevel ÇΔåæÇ§åãâ Çï‘ǵǃǵNjǢNjÇ∑ÅBDZÇÃÉãÅ[É`ÉìÇ™ê≥ǵǢílÇï‘Ç≥ǻǢóùóRDžǬǢǃÇÕÉeÉNÉjÉJÉã Q&A DV 43 InterfaceLib and Native Drivers ÇÇ≤óóâ∫Ç≥Ç¢ÅB

ç≈ãflÇÃÉVÉXÉeÉÄÇ≈ÇÕÅACurrentExecutionLevel ÇÕ DriverServicesLib à»äOÇÃä¬ã´Ç≈LJìÆçÏÇ∑ÇÈÇÊǧDžïœçXÅi2323165ÅjÇ≥ÇÍǃǢNjÇ∑ÅBç≈ãflÇÃÉVÉXÉeÉÄÇÕÇ∑Ç◊ǃÇÃäÑÇËçûÇ›ÅiÉlÉCÉeÉBÉuÉnÅ[ÉhÉEÉFÉAäÑÇËçûÇ›ÅATime Manager ǻǫÇÃå√Ç¢å`éÆÇÃLJÇÃÇä‹ÇfiÅjÇÉgÉâÉbÉLÉìÉOǵǃǢNjÇ∑ÅBCurrentExecutionLevel ÇÕDZÇÃDZÇΔÇóòópǵǃÅAÉäÉXÉgÇRÇÃÇÊǧDžÅAÉAÉãÉSÉäÉYÉÄÇ™ïœçXÇ≥ÇÍNjǵÇΩÅB



 ÉäÉXÉgÇR ç°ì˙Çà CurrentExecutionLevel ÇÃÉAÉãÉSÉäÉYÉÄÅB

if ÉlÉCÉeÉBÉuÉnÅ[ÉhÉEÉFÉAäÑÇËçûÇ›íÜÇÃèÍçá...
  return kHardwareInterruptLevel
else ìÒéüäÑÇËçûÇ›íÜÇÃèÍçáÇÕ...
  return kSecondaryInterruptLevel
else
  if äÑÇËçûÇ› depth Ç™É[ÉçÇÃèÍçáÇÕ...
    return kTaskLevel
  else
    return kHardwareInterruptLevel
  end if 
end if



åãò_ÇΔǵǃÅACurrentExecutionLevel ÇÕç≈ãflÇÃÉVÉXÉeÉÄÇ≈ê≥ǵǢé¿çsÉåÉxÉãÇï‘ǵNjÇ∑Ç™ÅAå√Ç¢ÉVÉXÉeÉÄÅiÇ∑Ç◊ǃÇà ROM-in-RAM Ç≈ǻǢÉVÉXÉeÉÄÅjÇÕå√Ç¢ÉAÉãÉSÉäÉYÉÄÇ™égÇÌÇÍǃǢÇÈÇΩÇflÅADZÇÍÇÁÇÃÉVÉXÉeÉÄÇ≈ÇÕê≥ǵǢílÇï‘ǵNjÇπÇÒÇÃÇ≈ÅACurrentExecutionLevel ÇÕàÍî ìIÇ»âåàï˚ñ@Ç≈ÇÕdžÇËÇ‹ÇπÇÒÅB



íê:
džÇÈÉVÉXÉeÉÄÇ≈ CurrentExecutionLevel ÇÃÇ«ÇÃÉoÅ[ÉWÉáÉìÇ™é¿ëïÇ≥ÇÍǃǢÇÈÇ©ÅAí≤Ç◊ÇÈï˚ñ@ÇÕdžÇËÇ‹Ç∑Ç™ÅAï°éGÇ≈Ç∑ÅBêVǵǢ CurrentExecutionLevel Çä‹ÇfiÉVÉXÉeÉÄÇ™ç≈èâÇ…èoâ◊Ç≥ÇÍÇΩÇÃÇÕÅAMac OS 9.0.4 ÇΔàÍèèÇ≈ǵÇΩÇ™ÅAé¿ç€ÇÃïœçXÇÕ System ÉtÉ@ÉCÉãÇ≈ÇÕÇ»Ç≠ÅAMac OS ROMÅiNewWorld ROMÅjÉtÉ@ÉCÉãÇÃíÜÇ≈Ç∑ÅBè⁄ǵÇ≠ÇÕç≈å„ÇÃÉ_ÉEÉìÉçÅ[ÉhÇÇ≤óóâ∫Ç≥Ç¢ÅB



TaskLevel

Mac OS 9.0 ÇÕêVǵǢÉVÉXÉeÉÄÉRÅ[Éã TaskLevel ÇíÒãüǵǃǢNjÇ∑ÅBDZÇÍÇÕéÂÇ…ÉfÉoÉbÉOÇÃéËèïÇØÇ™ñ⁄ìIÇ»ÇÃÇ≈ÅA"Debugging.h" Ç≈íËã`Ç≥ÇÍǃǢNjÇ∑ÅBÇ‹ÇΩÅAÉâÉCÉuÉâÉäÇÕ DebugLib Ç…ì¸Ç¡ÇƒÇ¢Ç‹Ç∑ÅBä÷êîÇΔíËêîÇÃíËã`ÇÕÉäÉXÉgÇSÇÃí ÇËÇ≈Ç∑ÅB



 ÉäÉXÉgÇS TaskLevel ÇÃä÷êîÇΔíËêîÇÃíËã`ÅB

enum {
    k68kInterruptLevelMask      = 0x00000007,
    kInVBLTaskMask              = 0x00000010,
    kInDeferredTaskMask         = 0x00000020,
    kInSecondaryIntHandlerMask  = 0x00000040
};
                           
extern pascal UInt32 TaskLevel(void);



WARNING:
TaskLevel ÇÃåãâ ÇÕǮǮÇÊǪê≥ǵǢÇ≈Ç∑Ç™ÅAÉfÉoÉbÉOà»äOÇÃñ⁄ìIÅiÉtÉ@ÉCÉãÇìØä˙ìIÇ…ì«ÇfiÇ©ÅAîÒìØä˙Ç…ì«ÇfiÇ©îªífÇ∑ÇÈÅjÇ…ÇÕégópǵǻǢÇ≈â∫Ç≥Ç¢ÅB



TaskLevel ÇÃñ⁄ìIÇÕÅAïsê≥Ç…åƒÇŒÇÍÇΩèÍçáÇ…ÅAǪÇÍÇä¥ímǵǃÅAÉfÉoÉbÉOÇ≈Ç´ÇÈÇΩÇflÇ≈Ç∑ÅBó·Ç¶ÇŒÅAÉVÉXÉeÉÄÉqÅ[Évì‡Ç…ÉÅÉÇÉäÇämï€Ç∑ÇÈÇÊǧǻÉhÉâÉCÉoÇèëǢǃǢÇÈèÍçáÅAǪÇÍÇÕÉVÉXÉeÉÄÉ^ÉXÉNÅiSystem TaskÅjÉåÉxÉãÇÃÇ›Ç≈é¿çsÇ≈Ç´ÇÈLJÇÃÇ≈Ç∑Ç™ÅATaskLevel ÇégǶnjÅAåÎǡǃäÑÇËçûÇ›éûÇ…åƒÇŒÇÍÇΩèÍçáÇÕÅAǪÇÍÇä¥ímǵǃÅAïKóvÇ»èàóùÇÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBè⁄ç◊DžǬǢǃÇÕÉäÉXÉgÇTÇÇ≤óóâ∫Ç≥Ç¢ÅB



 ÉäÉXÉgÇT TaskLevel ÇÃÉfÉoÉbÉOó·

static DrvQElPtr MyCreateDriveQueueElement(DeviceIdent id)
{
    DrvQElPtr result;
                           
    assert(TaskLevel() == 0);
                           
    result = (DrvQElPtr) NewPtrSysClear(sizeof(MyDrvQEl));
    if (result != nil) {
        ... ÉtÉBÅ[ÉãÉhÇãLì¸ ...
    }
                           
    return result;
}


ÉgÉbÉvÇ…ñflÇÈ

äÑÇËçûÇ›éûDžǵǃÇÕÇ»ÇÁǻǢDZÇΔ

äÑÇËçûÇ›éûÇ…é¿çsÇ∑ÇÈÉRÅ[ÉhÇÕÉVÉXÉeÉÄÉ^ÉXÉNÅiSystem TaskÅjÇ…é¿çsÇ∑ÇÈÉRÅ[ÉhÇΔî‰ärǵǃÅAólÅXÇ»êßå¿éñçÄǙdžÇËÇ‹Ç∑ÅBäÑÇËçûÇ›éûÇ…é¿çsÇ∑ÇÈÉRÅ[ÉhÇÕà»â∫ÇÃDZÇΔÇǵǃÇÕÇ¢ÇØÇ‹ÇπÇÒÅBà»â∫Ç…è]ÇÌǻǢäÑÇËçûÇ›ÉãÅ[É`ÉìÇÕÉVÉXÉeÉÄÉNÉâÉbÉVÉÖÇãNDZÇ∑â¬î\ê´Ç™Ç†ÇËÇ‹Ç∑ÅB

  • äÑÇËçûÇ›ÉãÅ[É`ÉìÇÕ Mac OS Memory Manager ÇégǡǃÅAÉÅÉÇÉäÇäÑÇËìñǃÇΩÇËÅAà⁄ìÆÇµÇΩÇËÅAÉpÅ[ÉWǵǃÇÕÇ¢ÇØÇ‹ÇπÇÒÅB
  • äÑÇËçûÇ›ÉãÅ[É`ÉìÇÕÉçÉbÉNÇ≥ÇÍǃǢǻǢÉnÉìÉhÉãÇÃèÛë‘Ç…óäǡǃÇÕÇ¢ÇØÇ‹ÇπÇÒÅB
  • äÑÇËçûÇ›ÉãÅ[É`ÉìÇÕÉçÅ[ÉÅÉÇÉäÇÃÉOÉçÅ[ÉoÉãïœêî MemErr ÇïœçXÇ∑ÇÈ Memory Manager ÉãÅ[É`ÉìÇåƒÇ—èoǵǃÇÕÇ¢ÇØÇ‹ÇπÇÒÅB
  • äÑÇËçûÇ›ÉãÅ[É`ÉìÇÕè„ãLÇÃÉãÅ[ÉãÇ…è]ÇÌǻǢ Mac OS ÉãÅ[É`ÉìÇåƒÇ—èoǵǃÇÕÇ¢ÇØÇ‹ÇπÇÒÅB
  • äÑÇËçûÇ›ÉãÅ[É`ÉìÇÕìØä˙ìIÇ» I/O ÇçsǡǃÇÕÇ¢ÇØÇ‹ÇπÇÒÅBDZÇÍÇÕ File ManagerÅADevice ManagerÅAPPC ToolboxÅAOpen Transport Çä‹Ç›Ç‹Ç∑ÅB
  • äÑÇËçûÇ›ÉãÅ[É`ÉìÇÕÅA68K ÉRÅ[ÉhÇÃèÍçáÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇà A5 óÃàÊÇê≥ǵÇ≠ê›íËǵǻǢå¿ÇËÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃÉOÉçÅ[ÉoÉãïœêîÇóòópÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹ÇπÇÒÅBDZÇÃÉeÉNÉjÉbÉNÇÕ Inside Macintosh: Memory Çà Accessing Application Globals in a VBL Task Ç≈ê‡ñæÇ≥ÇÍǃǢNjÇ∑ÅB
  • äÑÇËçûÇ›ÉãÅ[É`ÉìÇÕÅA68K ÉRÅ[ÉhÇÃèÍçáÅAàŸÇ»ÇÈÉRÅ[ÉhÉZÉOÉÅÉìÉgÇÃÉRÅ[ÉhÇé¿çsǵǃÇÕÇ¢ÇØÇ‹ÇπÇÒÅBÇΩÇæÇµÅAǪÇÃÉRÅ[ÉhÉZÉOÉÅÉìÉgÇ™ÉÅÉÇÉäÇ…ÉçÅ[ÉhÇ≥ÇÍǃǮÇËÅAÉWÉÉÉìÉvÉeÅ[ÉuÉãÇ™ê≥ǵÇ≠èâä˙âªÇ≥ÇÍǃÅAǵǩLJ A5 óÃàÊÇ™ê≥ǵÇ≠ê›íËÇ≥ÇÍǃǢÇÈèÍçáÇ…å¿ÇËÅAé¿çsÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB
  • è„ãLÇ…ä÷òAÇ∑ÇÈíçà”éñçÄÇΔǵǃÅAInside Macintosh Ç≈íËã`Ç≥ÇÍǃǢÇÈàÍïîÇÃÉVÉXÉeÉÄÉRÅ[ÉãÅiBitAndÅAHiWord ǻǫÅjÇÕÉvÉçÉOÉâÉÄÇ… static ÉäÉìÉNÇ≥ÇÍÇÈ glue ÉRÅ[ÉhÇ≈Ç∑ÅBDZÇÃÉRÅ[ÉhÇÕàŸÇ»ÇÈÉZÉOÉÅÉìÉgÇ…ë∂ç›Ç∑ÇÈâ¬î\ê´Ç™Ç†ÇËÇ‹Ç∑ÇÃÇ≈ÅAÉVÉXÉeÉÄÉRÅ[ÉãÇ™ÉÅÉÇÉäÇà⁄ìÆÇ≥ÇπÇ»Ç≠ǃLJÅAåƒÇ—èoÇ∑çsà◊é©ëÃÇ™ÉÅÉÇÉäÇà⁄ìÆÇ≥ÇπÇÈâ¬î\ê´Ç™Ç†ÇËÇ‹Ç∑ÅB
  • äÑÇËçûÇ›ÉãÅ[É`ÉìÇÕÅACFM-68K ÉRÅ[ÉhÇÃèÍçáÅAÉeÉNÉjÉJÉãÉmÅ[Ég 1084: Running CFM-68K Code at Interrupt Time: Is Your Code at Risk? Ç…ãLèqÇ≥ÇÍǃǢÇÈèåèÇñûÇΩÇ≥Ç»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅB

ÉgÉbÉvÇ…ñflÇÈ

 

äÑÇËçûÇ›éûÇ…åƒÇ—èoǵâ¬î\Ç»ÉãÅ[É`ÉìÅiÉ}ÉlÅ[ÉWÉÉÅj

DZÇÃÇ≈ÇÕÅAäÑÇËçûÇ›éûÇ…åƒÇ—èoǵâ¬î\Ç»ÉãÅ[É`ÉìÇÉ}ÉlÅ[ÉWÉÉÇ≤ÇΔÇ…èWÇflǃǢNjÇ∑ÅB



èdóv:
DZDZÇ≈ÇÕÅAäÑÇËçûÇ›éûÇ…åƒÇ—èoǵǃà¿ëSÇæÇΔï€èÿÇ≥ÇÍǃǢÇÈÉãÅ[É`ÉìÇè–âÓǵǃǢNjÇ∑ÅBDZDZÇ≈è–âÓÇ≥ÇÍǃǢǻǢÉãÅ[É`ÉìÇÃíÜÇ…ÇÕÅAäÑÇËçûÇ›éûÇ…égǶÇÈèÍçáǙdžÇËÇ‹Ç∑ÅBǵǩǵÅADZDZÇ≈è–âÓÇ≥ÇÍǃǢǻǢÉãÅ[É`ÉìÇÕè´óàÇÃÉVÉXÉeÉÄÇ‚ÉTÅ[ÉhÉpÅ[ÉeÉBÇÃÉpÉbÉ`Ç…ÇÊǡǃÅAó\çêÇ»Ç≠ïœçXÇ≥ÇÍÇÈèÍçáǙdžÇËÇ‹Ç∑ÇÃÇ≈ÅAäÑÇËçûÇ›éûÇ…åƒÇ—èoÇ≥ǻǢÇ≈â∫Ç≥Ç¢ÅB



Memory Manager

àÍî ìIÇ…ÇÕÅAÇÊÇ≠égópÇ≥ÇÍÇÈ Memory Manager ÉRÅ[ÉãÇÃÇ§ÇøÅAäÑÇËçûÇ›éûÇ…à¿ëSÇ…åƒÇ—èoÇπÇÈLJÇÃÇÕÇŸÇΔÇÒǫdžÇËÇ‹ÇπÇÒÅBéÂóvÇ»ó·äOÇÕ BlockMoveÅiBlockMoveData ǻǫÇä‹ÇfiÅjÇΔ StripAddress Ç≈Ç∑ÅBDZÇÍÇÁÇÃÉRÅ[ÉãÇÕäÑÇËçûÇ›éûÇ≈LJÅAé¿çsÉåÉxÉãÇ…ä÷ÇÌÇÁÇ∏ÅAà¿ëSÇ…égópÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBäÑÇËçûÇ›éûÇ…ÇÕÅAíºê⁄Å^ä‘ê⁄Çñ‚ÇÌÇ∏ÅAÉÅÉÇÉäÇÃäÑÇËìñǃÅAà⁄ìÆÅAÉpÅ[ÉWÇÕÇ≈Ç´Ç‹ÇπÇÒÅBÇ‹ÇΩÅAÉçÉbÉNÇ≥ÇÍǃǢǻǢÉnÉìÉhÉãÇóLå¯Ç»Ç‡ÇÃÇΔâºíËÇµÇƒÇ‡Ç¢ÇØÇ‹ÇπÇÒÅB

Inside Macintosh: Memory Ç…èëÇ©ÇÍǃǢÇÈÉVÉXÉeÉÄÉRÅ[ÉãÇÃÇ§Çøà¿ëSǻLJÇÃLJdžÇËÇ‹Ç∑ÅBÉfÉoÉbÉKÉRÅ[ÉãÇÕÇ∑Ç◊ǃäÑÇËçûÇ›éûÇ≈LJà¿ëSÇ≈Ç∑ÅBDZÇÍÇ…ÇÕÅADebuggerEnterÅADebuggerExitÅADebuggerGetMaxÅADebuggerLockMemoryÅADebuggerPollÅAPageFaultFatalÅADebuggerUnlockMemory Ç™ä‹Ç‹ÇÍÇ‹Ç∑ÅBSwapMMUMode ÇΔ Translate24to32 ÇÕäÑÇËçûÇ›éûÇ…åƒÇ—èoǵǃLJǩNjǢNjÇπÇÒÅB

Virtual Memory Manager ä÷êî GetPageStateÅAGetPhysicalÅADeferUserFNÅAUnholdMemoryÅAUnlockMemory ÇÕäÑÇËçûÇ›éûÇ≈LJà¿ëSÇ≈Ç∑ÅB

Virtual Memory Manager ä÷êî HoldMemoryÅALockMemoryÅALockMemoryContiguousÅALockMemoryForOutput ÇÕÉyÅ[ÉWÉtÉHÉãÉgÇ™î≠ê∂ǵǃLJó«Ç¢ÇÃÇ≈džÇÍÇŒÅAåƒÇ—èoÇ∑DZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBÇ‹ÇΩÅAÉyÅ[ÉWÉtÉHÉãÉgÇ™î≠ê∂ǵǻǢDZÇΔÇ™ämñÒÇ≈Ç´ÇÍÇŒÅAåƒÇ—èoǵǃLJç\ǢNjÇπÇÒÅBó·Ç¶ÇŒÅAï®óùìIÉÅÉÇÉäì‡Ç…džÇÈDZÇΔÇ™ï€èÿÇ≈Ç´ÇÈÉÅÉÇÉäÇ…ëŒÇµÇƒÇÕ LockMemory ÇåƒÇ—èoÇ∑DZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB

ëºÇà Memory Manager ä÷êîÇÕÅAà»â∫ÇÃóùóRÇ…ÇÊÇËÅAà¿ëSÇ≈ÇÕdžÇËÇ‹ÇπÇÒÅB

  1. ÉçÅ[ÉÅÉÇÉäÇÃÉOÉçÅ[ÉoÉãïœêî MemErr ÇïœçXǵNjÇ∑ÅBMemErr ÇÕ MemError Ç™ï‘Ç∑ílÇ≈Ç∑Ç™ÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕèÌÇ… MemError Çå©ÇÈDZÇΔÇ≈ÅAéñëOÇ…çsÇ¡ÇΩçÏãΔÇÃåãâ ÇímÇËÇ‹Ç∑ÅBMemErr Ç™äÑÇËçûÇ›íÜÇ…ïœçXÇ≥ÇÍǃǵNjǡǃÇÕÅAê≥ǵǢåãâ ÇìæÇÈDZÇΔÇ™Ç≈Ç´Ç‹ÇπÇÒÅB
  2. ÉÅÉÇÉäÇäÑÇËìñǃÅAà⁄ìÆÅAÉpÅ[ÉWǵNjÇ∑ÅBÇÕÇ≈Ç´Ç‹ÇπÇÒÅBÇ‹ÇΩÅAÉçÉbÉNÇ≥ÇÍǃǢǻǢÉnÉìÉhÉãÇóLå¯Ç»Ç‡ÇÃÇΔâºíËǵǃǢNjÇ∑ÅB
  3. äÑÇËçûÇ›éûÇ…ì‡óeÇ™íËã`Ç≥ÇÍǃǢǻǢÉfÅ[É^ç\ë¢ÇéQèΔǵǃǢNjÇ∑ÅB


èdóv:
àÍïîÇÃÉfÉxÉçÉbÉpÇÕÅAMemErr ÇÃílÇï€ë∂ǵǃÅAå„Ç≈å≥Ç…ñflÇπÇŒÅADisposeHandle ÇÃÇÊǧDžÉÅÉÇÉäÇà⁄ìÆÇ≥ÇπǻǢä÷êîÇåƒÇ—èoǵǃLJëÂè‰ïvÇæÇΔévÇÌÇÍÇÈǩLJǵÇÍÇ‹ÇπÇÒÇ™ÅAè„ãLÇÃÇRǬñ⁄ÇÃóùóRÇ…ÇÊÇËÅADZÇÍÇÕÇ≈Ç´Ç‹ÇπÇÒÅB



äÑÇËçûÇ›éûÇ…ÇÕ StackSpace ÇåƒÇ—èoǵǃÇÕÇ¢ÇØÇ‹ÇπÇÒÅBStackSpace ÇÕÅAåªç›ÇÃÉvÉçÉZÉXÇÃÉçÅ[ÉÅÉÇÉäÇà 2 ǬÇÃÉOÉçÅ[ÉoÉãïœêîÇî‰ärǵNjÇ∑ÅBäÑÇËçûÇ›éûÇ…ÇÕÅAóLå¯Ç»ÉvÉçÉZÉXì‡Ç…Ç¢ÇÈDZÇΔÇ≥Ƕï€èÿÇ≥ÇÍǃǢNjÇπÇÒÅBécîOǻDZÇΔÇ…ÅAStackSpace ÇÕÅAMemory Manager Çà MemError Ç™ï‘Ç∑ÅAÉçÅ[ÉÅÉÇÉäÇÃÉOÉçÅ[ÉoÉãïœêî MemErr ÇïœçXǵNjÇ∑ÅBëΩÇ≠ÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕ MemErr àÀë∂ǵNjÇ∑ÇÃÇ≈ÅAäÑÇËçûÇ›íÜÇ…ïœçXÇ≥ÇÍÇÈDZÇΔÇÕåÎìÆçÏÇÃå¥àˆÇΔÇ»ÇËÇ‹Ç∑ÅB



íê:
écîOǻDZÇΔÇ…ÅAäÑÇËçûÇ›éûÇ… StackSpace ÇåƒÇ—èoÇ∑É\ÉtÉgÉEÉFÉAÇ™ê¢ÇÃíÜÇ…èoâÒǡǃǢNjÇ∑ÅBÇ≥ÇÁÇ…écîOǻDZÇΔÇ…ÅAÉAÉbÉvÉãÇ™èoâ◊ǵÇΩÉ\ÉtÉgÉEÉFÉALJä‹Ç‹ÇÍǃǢNjÇ∑ÅB

ÉAÉbÉvÉãÇ≈ÇÕÅADZÇÃÇÊǧǻÉoÉOÇÇ∑Ç◊ǃÉVÉXÉeÉÄÇ©ÇÁîrèúÇ∑ÇÈÇÊǧìwóÕǵǃǢNjÇ∑ÅBDTS Ç≈ÇÕ MemError ÇÃï‘Ç∑ílÇà¯Ç´ë±Ç´êMÇ∂ÇÈÇÊǧÅAêÑèßǵǃǢNjÇ∑ÅBǵǩǵÅAã^Ç¢ê[Ç¢ÉfÉxÉçÉbÉpÇÕà»â∫ÇÃÇÊǧǻÉâÉbÉpÅ[ä÷êîÇópà”Ç∑ÇÈDZÇΔÇ≈ÅADZÇÃñ‚ëËÇâÒîÇ≈Ç´Ç‹Ç∑ÅB

static OSErr MyNewHandle(Size byteCount, Handle *result)
{
    OSErr err;
 
    Assert(result != nil);
    err = noErr;
    *result = NewHandle(byteCount);
    if (*result == nil) {
        err = MemError();
        Assert(err != noErr);
        if (err == noErr) {
            err = memFullErr;
        }
    }
    return err;
}



Operating System Utilities

Enqueue ÇΔ Dequeue ÇÕäÑÇËçûÇ›éûÇ≈LJà¿ëSÇ≈Ç∑ÅBǢǬåƒÇ—èoǵǃLJǩNjǢNjÇπÇÒÅBFormatRecToStringÅià»ëOÇÕ Format2StrÅjÅAStringToExtendedÅià»ëOÇÕ FormatX2StrÅjÅAExtendedToStringÅià»ëOÇÕ FormatStr2XÅjLJà¿ëSÇ≈Ç∑ÅB



íê:
äÑÇËçûÇ›éûÇ…ÇÕ ReadLocation ÇåƒÇ—èoÇ≥ǻǢÇ≈Ç≠ÇæÇ≥Ç¢ÅBReadLocation ÇÕÅAï∂èëâªÇ≥ÇÍǃǢǻǢ ReadXPRAM ÇégǡǃÅAÉpÉâÉÅÅ[É^ RAM Ç©ÇÁèÓïÒÇéÊìæÇµÇ‹Ç∑ÅBMacintosh ÉRÉìÉsÉÖÅ[É^ÇÃíÜÇ…ÇÕÅAäÑÇËçûÇ›åoóRÇ≈ÉpÉâÉÅÅ[É^ RAM ÇΔí êMÇ∑ÇÈLJÇÃǙdžÇËÇ‹Ç∑ÅBReadXPRAM Ç‚ ReadXPRAM ÇåƒÇ—èoÇ∑ÉãÅ[É`ÉìÇäÑÇËçûÇ›éûÇ…åƒÇ—èoÇ∑ÇΔÅAÉVÉXÉeÉÄÇÉnÉìÉOÇ≥ÇπÇÈèÍçáǙdžÇËÇ‹Ç∑ÅB



Device Manager

Device Manager ÇÃéÂóvÉgÉâÉbÉvÅi_OpenÅA_ReadÅA_WriteÅA_ControlÅA_StatusÅA_CloseÅjÇÕåƒÇ—èoǵǃLJà¿ëSÇ»èÍçáǙdžÇËÇ‹Ç∑ÅBàÍïîÇÃÉgÉâÉbÉvÅi_OpenÅA_ReadÅA_WriteÅA_CloseÅjÇÕ File Manager ÇΔã§óLÇ≥ÇÍǃǢNjÇ∑Ç™ÅAäeÅXÇÃìÆçÏÇÕà»â∫ÇÃÇÊǧDžé·ä±àŸÇ»ÇËÇ‹Ç∑ÅB

  • ìØä˙ìIÇ…åƒÇ—èoÇ∑ä÷êîÇÕégǶNjÇπÇÒÅB
  • îÒìØä˙ìIÇ…åƒÇ—èoÇ∑ä÷êîÇÕÅAégópâ¬î\Ç»èÛë‘Ç≈džÇÍÇŒÅAäÑÇËçûÇ›éûÇ…åƒÇ—èoǵǃLJà¿ëSÇ≈Ç∑ÅB
  • Immediate ä÷êîÇÕäÑÇËçûÇ›éûÇ…égópÇ≈Ç´Ç‹Ç∑Ç™ÅAéÛÇØéÊÇËë§ÇÃÉhÉâÉCÉoLJäÑÇËçûÇ›éûÇ… immediate ÉäÉNÉGÉXÉgÇéÛÇØéÊÇÈópà”Ç™ïKóvÇ≈Ç∑ÅBÉtÉ@ÉCÉãDžǬǢǃÇÕ immediate ä÷êîÇÕégǶNjÇπÇÒÅB
  • ÉfÉxÉCÉXÉhÉâÉCÉoÇÃÉIÅ[ÉvÉìÅ^ÉNÉçÅ[ÉYÇÕïKÇ∏ÉVÉXÉeÉÄÉ^ÉXÉNÅiSystem TaskÅjÇ©ÇÁ OpenDriver ÇΔ CloseDriver égópǵNjÇ∑ÅB
  • ÉtÉ@ÉCÉãÇäJÇ≠éûÇÕïKÇ∏ OpenDF ånÇÃä÷êîÅiFSpOpenDFÅAPBOpenDFÅAPBHOpenDFÅjÇégópǵNjÇ∑ÅBDZÇÍÇÁÇÃä÷êîÇÃîÒìØä˙ÉoÅ[ÉWÉáÉìÇÕäÑÇËçûÇ›éûÇ…égópâ¬î\Ç≈Ç∑ÅB
  • ǪÇÃëºÇà Open ånÇÃä÷êîÇÃîÒìØä˙ÉoÅ[ÉWÉáÉìÅiPBOpenÅAPBHOpenÅjÇÕÉtÉ@ÉCÉãÇäJÇ≠éûÇ…ÅAäÑÇËçûÇ›éûÇ≈LJóLå¯Ç≈Ç∑Ç™ÅAíçà”Ç™ïKóvÇ≈Ç∑ÅBó·Ç¶ÇŒÅAÅg.SonyÅhÇΔåæÇ§ÉtÉ@ÉCÉãÇäJDZǧÇΔÇ∑ÇÈÇΔÅAä‘à·Ç¡ÇƒÉtÉçÉbÉsÅ[ÉhÉâÉCÉuÇÃÉfÉoÉCÉXÉhÉâÉCÉoÇäJÇ≠DZÇΔDžǻǡǃǵNjǢNjÇ∑ÅB

Device Manager ÇΔã§óLÇ≥ÇÍǻǢ File Manager ä÷êîDžǬǢǃÇÕ File Manager ÇÇ≤óóâ∫Ç≥Ç¢ÅB

è„ãLÇà Device Manager ÉgÉâÉbÉvÇÉpÉbÉ`Ç∑ÇÈèÍçáÅAäÑÇËçûÇ›éûÇÃÉäÉNÉGÉXÉgLJê≥ǵÇ≠èàóùÇµÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅBÉgÉâÉbÉvÇ™ìØä˙ìIÇ…åƒÇŒÇÍÇΩÇΔîªífÇ≈ǴǻǢèÍçáÇÕÅAäÑÇËçûÇ›éûDžǵǃÇÕÇ¢ÇØÇ»Ç¢Ç±ÇΔÇîÇØÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅB

ÉfÉoÉCÉXÉhÉâÉCÉoÇÕÇRéÌófiÇÃÉäÉNÉGÉXÉgÅiìØä˙ÅAîÒìØä˙ÅAimmediateÅjÇèàóùÇµÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅBîÒìØä˙ìIÇ…åƒÇŒÇÍÇÈDZÇΔÇÉTÉ|Å[ÉgÇ∑ÇÈÉhÉâÉCÉoÇÕÅAìØä˙ìIÇ…åƒÇŒÇÍÇΩèÍçáLJÅAîÒìØä˙ìIÇ…åƒÇŒÇÍÇΩèÍçáLJÅAîÒìØä˙ìIÇ…èàóùÇçsÇ¢ÅAäÑÇËçûÇ›éûDžǵǃÇÕÇ¢ÇØÇ»Ç¢Ç±ÇΔÇîÇØÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅBDZÇÃì_ÇÕÉeÉNÉjÉJÉãÉmÅ[Ég 1067: Traditional Device Drivers: Sync or Swim Ç≈è⁄ǵÇ≠âê‡Ç≥ÇÍǃǢNjÇ∑ÅBàÍï˚ÅAimmediate Ç»ÉäÉNÉGÉXÉgÇÕåƒÇŒÇÍÇΩéûÇÃé¿çsÉåÉxÉãÇ≈èàóùÇ≥ÇÍÇ‹Ç∑ÇÃÇ≈ÅAÉNÉâÉCÉGÉìÉgë§Ç™ÉVÉXÉeÉÄÉ^ÉXÉNÅiSystem TaskÅjéûDžǵǩåƒÇ—èoÇ≥ǻǢÇΔÇÌǩǡǃǢÇÈèÍçáÇÕÅAÉVÉXÉeÉÄÉ^ÉXÉNéûÇ≈džÇÈÇΔâºíËÇ∑ÇÈDZÇΔÇÕç\ǢNjÇπÇÒÅB

ç≈å„ÇÃì_Ç…ä÷òAǵNjÇ∑Ç™ÅAaccRun ÉRÉìÉgÉçÅ[ÉãÉãÅ[É`ÉìÇÕèÌÇ…ÉVÉXÉeÉÄÉ^ÉXÉNÅiSystem TaskÅjéûÇ…åƒÇŒÇÍÇ‹Ç∑ÇÃÇ≈ÅAaccRun DžǬǢǃÇÕÉÅÉÇÉäÇÃà⁄ìÆÅAÉpÅ[ÉWǻǫǙãñÇ≥ÇÍÇ‹Ç∑ÅB

File Manager

File Manager Ç÷ÇÃîÒìØä˙åƒÇ—èoǵÇÕäÑÇËçûÇ›éûÇ≈LJà¿ëSÇ≈Ç∑ÅBó·Ç¶ÇŒÅAPBOpenDFAsync ÇÕäÑÇËçûÇ›éûÇ…åƒÇ—èoǵǃç\ǢNjÇπÇÒÅB

File System Manager

File System Manager ÇÃä÷êî GetFSInfo ÇΔ SetFSInfo ÇÕäÑÇËçûÇ›éûÇ≈LJà¿ëSÇ≈Ç∑ÅBǪÇÃëºÇà File System Manager ä÷êîÅiInstallFSÅARemoveFSÅAInformFSMÅAInformFFSÅjÇÕà¿ëSÇ≈ÇÕdžÇËÇ‹ÇπÇÒÅB

File System Manager ÇÃÉvÉâÉOÉCÉìÇÕäÑÇËçûÇ›éûÇ≈džÇÈÇΔâºíËǵǃé¿çsÇ∑ÇÈïKóvǙdžÇËÇ‹Ç∑ÅBǪǵǃÅAFile System Manager Ç…ï ìrãLèqǙǻǢå¿ÇËÅADZÇÃÉeÉNÉjÉJÉãÉmÅ[ÉgÇÃì‡óeÇ…è]ǧïKóvǙdžÇËÇ‹Ç∑ÅBUTAllocateVCB ÇΔ UTDisposeVCB ÇÕäÑÇËçûÇ›éûÇ…åƒÇ—èoǵǃLJà¿ëSÇ≈ÇÕdžÇËÇ‹ÇπÇÒÅBǪÇÃëºÇà File System Manager ÉÜÅ[ÉeÉBÉäÉeÉBä÷êîÅiUTCacheReadIP ǻǫÅjÇÕà¿ëSÇ≈Ç∑Ç™ÅAä¬ã´Ç…ÇÊÇÈêßñÒǙdžÇËÇ‹Ç∑ÅB

Driver Services

ÉlÉCÉeÉBÉuÉhÉâÉCÉoÉTÅ[ÉrÉXÉâÉCÉuÉâÉäÅiDriverServicesLibÅjÇÕëΩÇ≠ÇÃà¿ëSÇ»ä÷êîÇíÒãüǵǃǢNjÇ∑ÅBDZÇÍÇÁÇÃä÷êîÇÃåƒÇŒÇÍÇÈé¿çsÉåÉxÉãÇÕ Designing PCI Cards and Drivers for Power Macintosh Computers Çà 283 ÉyÅ[ÉWDždžÇÈÉeÅ[ÉuÉã 9-2 Ç≈íËã`Ç≥ÇÍǃǢNjÇ∑ÅB

DZÇÃÉeÅ[ÉuÉãÇì«ÇfiDždžÇΩǡǃÅAà»â∫ÇÃíçà”éñçÄǙdžÇËÇ‹Ç∑ÅB

  • ÅgSoftware interrupt levelÅhÇΔñæãLÇ≥ÇÍǃǢÇÈçsÇÕìÒéüäÑÇËçûÇ›ÉåÉxÉãÇÃDZÇΔÇ≈Ç∑ÅB
  • ÅgHardware interrupt levelÅhÇΔñæãLÇ≥ÇÍǃǢÇÈçsÇÕÉlÉCÉeÉBÉuÉnÅ[ÉhÉEÉFÉAäÑÇËçûÇ›ÉåÉxÉãÇÃDZÇΔÇ≈Ç∑ÅB
  • ÉÅÉÇÉäÇäÑÇËìñǃÇÈÇÊǧǻä÷êîÇÕÉ^ÉXÉNÉåÉxÉãÇ≈é¿çsÇµÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅBÇ‹ÇΩÅAǪÇÃâ∫ÇÃé¿çsä¬ã´Ç‡ÉVÉXÉeÉÄÉ^ÉXÉNÅiSystem TaskÅjÉåÉxÉãÇ≈Ç»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅB
  • ÉlÉCÉeÉBÉuÉnÅ[ÉhÉEÉFÉAäÑÇËçûǛǩÇÁåƒÇ—èoǵâ¬î\Ç»ä÷êîÇÕÉnÅ[ÉhÉEÉFÉAäÑÇËçûÇ›ÉåÉxÉãÇ©ÇÁLJåƒÇ—èoǵâ¬î\Ç≈Ç∑ÅB

PrepareMemoryForIO Ç≈óLå¯Ç»é¿çsÉåÉxÉãÇÕ ÉeÉNÉjÉJÉã Q&A DV 32: PrepareMemoryForIO and Execution Levels Ç≈íËã`Ç≥ÇÍǃǢNjÇ∑ÅB

è]óàÇÃÉlÉbÉgÉèÅ[ÉNä÷êî

è]óàÇà AppleTalk ÇÕÅAÉfÉoÉCÉXÉhÉâÉCÉoÇÃèWÇ‹ÇËÇΔǵǃé¿ëïÇ≥ÇÍǃǢÇÈÇΩÇflÅAîÒìØä˙åƒÇ—èoǵÇ≈džÇÍÇŒÅAäÑÇËçûÇ›éûÇ…åƒÇ—èoÇ∑DZÇΔÇ™â¬î\Ç≈Ç∑ÅB

MacTCP ÇÕ 2 ǬÇÃïîï™Ç…ï™äÑÇ≥ÇÍNjǵÇΩÅBTCPÅAUDPÅAICMP ÇÉTÉ|Å[ÉgÇ∑ÇÈÉRÉAïîï™ÇÕÉfÉoÉCÉXÉhÉâÉCÉoÇΔǵǃé¿ëïÇ≥ÇÍǃǢNjÇ∑ÅBîÒìØä˙åƒÇ—èoǵÇ≈džÇÍÇŒÅAäÑÇËçûÇ›éûÇ…åƒÇ—èoÇ∑DZÇΔÇ™â¬î\Ç≈Ç∑ÅB

Domain Name Resolver (DNR) ÇÕ glue ÉRÅ[ÉhÇΔǵǃé¿ëïÇ≥ÇÍǃǮÇËÅAäÑÇËçûÇ›éûÇ…åƒÇ—èoÇπÇ‹ÇπÇÒÅBMacTCP Ç≈ÇÕÅAStrToAddrÅAAddrToNameÅAHInfoÅAMXInfo ÇÕäÑÇËçûÇ›éûÇ≈LJà¿ëSÇ≈Ç∑ÅBǵǩǵÅADZÇÍÇÁÇÃÉRÅ[ÉãÇÕ Open Transport TCP/IP Ç≈ÇÕÅAÇÕÇ∂ÇflǃåƒÇ—èoÇ≥ÇÍÇÈÇÃÇ™äÑÇËçûÇ›éûÇæÇΔÅAåƒÇ—èoǵÇÕÇ∑Ç◊ǃé∏îsǵNjÇ∑ÅBDZÇÍÇÁÇÃÉRÅ[ÉãÇÕäÑÇËçûÇ›éûÇ…åƒÇ—èoÇ≥ǻǢï˚Ç™ó«Ç¢Ç≈ǵÇÂǧÅB

Open Transport

Inside Macintosh: Networking with Open Transport ÇÃç≈êVî≈ÇÕÅAé¿çsÉåÉxÉãÇ≤ÇΔÇ…égópÇ≈Ç´ÇÈä÷êîÇ™è⁄ǵÇ≠åfç⁄Ç≥ÇÍǃǢNjÇ∑ÅB

Power Manager

ÉXÉäÅ[ÉvÉLÉÖÅ[ÉGÉìÉgÉäÇÃÉCÉìÉXÉgÅ[ÉãÇ®ÇÊÇ—çÌèúÅiSleepQInstall Ç‚ SleepQRemove ÇégópÇ∑ÇÈèÍçáÅjÇÕäÑÇËçûÇ›éûÇ≈LJà¿ëSÇ≈Ç∑ÅBBatteryStatus ÇΔ SetWUTime LJà¿ëSÇ≈Ç∑ÅB



íê:
àÍïîÇÃèÍçáÅAÉXÉäÅ[ÉvÉLÉÖÅ[ÉGÉìÉgÉäÇ™ëOñ ÉvÉçÉZÉXÇÃǻǢèÛë‘Ç≈åƒÇŒÇÍÇÈèÍçáǙdžÇËÇ‹Ç∑ÅBǬNjÇËÅAÉXÉäÅ[ÉvÉLÉÖÅ[ÉGÉìÉgÉäì‡Ç©ÇÁÉÜÅ[ÉUÉCÉìÉ^ÉtÉFÅ[ÉXÇï\é¶Ç∑ÇÈDZÇΔÇÕäÎåØÇ≈Ç∑ÅBÇΩÇΔǶnjÅAPowerBook Duo Ç‚ PowerBook ÇÃàÍïîÇÃã@éÌÇ≈ÇÕÅAÇ”ÇΩDžǬǢÇΩÉXÉäÅ[ÉvÉXÉCÉbÉ`ÇÅAProcess Manager ÇÃÉpÉbÉ`Ç™ÉvÉçÉZÉXÇÃêÿÇËë÷ǶÇÃç≈íÜÇ…åüèoÇ∑ÇÈèÍçáǙdžÇËÇ‹Ç∑ÅBDZDZÇ≈ ModalDialog ÇÃÇÊǧǻÉãÅ[É`ÉìÇåƒÇ—èoÇ∑ÇΔÅAëOñ ÉvÉçÉZÉXÇ™ë∂ç›Ç»Ç¢ÇΩÇflÅAProcess Manager ÇÕÉ_ÉCÉAÉçÉOópÇÃÉCÉxÉìÉgÇëóÇÈDZÇΔÇ™Ç≈Ç´Ç‹ÇπÇÒÅBÉÇÅ[É_ÉãÉ_ÉCÉAÉçÉOÉtÉBÉãÉ^ÇÕâΩLJÉCÉxÉìÉgÇéÛÇØéÊÇÍǻǢÇΩÇflÅAÉnÉìÉOǵǃǵNjǢNjÇ∑ÅB



Notification Manager

NMInstall Ç®ÇÊÇ— NMRemove ÇÕäÑÇËçûÇ›éûÇ≈LJåƒÇ—èoÇπÇ‹Ç∑ÅB



íê:
í ímÇ÷ÇÃâûìöÉvÉçÉVÅ[ÉWÉÉÅinotification response procedureÅjÇÕÅAÉVÉXÉeÉÄÉ^ÉXÉNéûÇ…åƒÇ—èoÇ≥ÇÍÇÈÇÃÇ≈ÅAÇŸÇΔÇÒÇ«ÇÃèàóùÇÕà¿ëSÇ…çsǶNjÇ∑ÅBǵǩǵÅAëOñ ÉvÉçÉZÉXÇÃÉRÉìÉeÉLÉXÉgÇ≈ìÆçÏÇ∑ÇÈÇΩÇflÅAÉÜÅ[ÉUÇΔÇÃëŒòbÇÕÇfiÇ∏ǩǵǢÇ≈ǵÇÂǧÅB



Desktop Manager

Ç∑Ç◊ǃÇÃîÒìØä˙åƒÇ—èoǵÇÕà¿ëSÇ≈Ç∑ÅBó·Ç¶ÇŒÅAPBDTAddAPPLAsync ǻǫÇÕäÑÇËçûÇ›éûÇ≈LJåƒÇ—èoÇπÇ‹Ç∑ÅB

Gestalt

Gestalt ÇäÑÇËçûÇ›éûÇ…åƒÇ—èoÇ∑DZÇΔÇ…ä÷ǵǃÅAInside Macintosh: Operating System Utilities ÇÕéüÇÃÇÊǧDžèqÇ◊ǃǢNjÇ∑ÅB

When passed one of the Apple-defined selector codes, the Gestalt function does not move or purge memory and therefore may be called at any time, even at interrupt time. However, selector functions associated with non-Apple selector codes might move or purge memory, and third-party software can alter the Apple-defined selector functions.

DZÇÍÇÕäÓñ{ìIÇ…ê≥ǵǢÇ≈Ç∑Ç™ÅAà»â∫ÇÃíçà”ì_ǙdžÇËÇ‹Ç∑ÅB

  1. ÉAÉbÉvÉãÇ™íËã`Ç∑ÇÈ Gestalt ÉZÉåÉNÉ^ÇÕÇ∑Ç◊ǃǙà¿ëSÇ≈ÇÕdžÇËÇ‹ÇπÇÒÅBǵǩLJÅAÇ«ÇÃÉZÉåÉNÉ^Ç™à¿ëSÇ©ÇímÇÈämé¿Ç»ï˚ñ@ÇÕdžÇËÇ‹ÇπÇÒÅB
  2. Mac OS 8.5 à»ëOÇÃÉVÉXÉeÉÄÇ≈ÇÕÅAGestalt Manager ÇÕ Gestalt ÉeÅ[ÉuÉãÇägí£Ç∑ÇÈç€Ç…äÑÇËçûÇ›éûÇ…à¿ëSÇ≈ÇÕǻǢDZÇΔÇǵǃǢNjǵÇΩÅBDZÇÃñ‚ëËÇÃÇΩÇflÅAGestalt ÇÕóùò_ìIÇ…à¿ëSÇ≈ÇÕdžÇËÇ‹ÇπÇÒÅBǵǩǵÅAGestalt ÉeÅ[ÉuÉãÇÕé¿ç€Ç…ÇÕÅAÇŸÇΔÇÒÇ«ägí£Ç≥ÇÍÇÈDZÇΔǙdžÇËÇ‹ÇπÇÒÅBÇ‹ÇΩÅAÉAÉbÉvÉãÇ≈ÇÕDZÇÃñ‚ëËÇ…ëòãˆÇµÇΩDZÇΔÇÕdžÇËÇ‹ÇπÇÒÅB

óvñÒÇ∑ÇÈÇΔÅA

  • êVãKÉRÅ[ÉhÇèëÇ≠éûÇÕÅAäÑÇËçûÇ›éûÇ… Gestalt ÇégÇÌǻǢ
  • å√Ç¢ÉRÅ[ÉhÇÃÉÅÉìÉeÉiÉìÉXÇ‚ÉoÅ[ÉWÉáÉìÉAÉbÉvÇçsǧç€ÇÕ Gestalt ÇégÇÌǻǢÇÊǧDžïœçXÇ∑ÇÈ

ÉAÉbÉvÉãÇ≈ÇÕÅADZÇÃDZÇΔÇæÇØÇÃÇΩÇflÇ…ÉoÅ[ÉWÉáÉìÉAÉbÉvÇÇ∑ÇÈÇŸÇ«ÇÃñ‚ëËÇ≈ÇÕǻǢÇΔçlǶǃǢNjÇ∑ÅB

Sound Manager

MACEVersionÅASndGetSysBeepStateÅASndManagerStatusÅASndPauseFilePlayÅASndSetSysBeepStateÅASndSoundManagerVersion ÇÕÇ∑Ç◊ǃäÑÇËçûÇ›éûÇ…égópâ¬î\Ç≈Ç∑ÅB

SndDoImmediate ÇΔ SndDoCommand ÇÕäÑÇËçûÇ›éûÇ…à¿ëSÇ»ÉRÉ}ÉìÉhÇ»ÇÁÅAà¿ëSÇ≈Ç∑ÅBãÔëÃìIÇ…åæÇ§ÇΔÅAbufferCmd ÇÕÉTÉEÉìÉhÇÃèoóÕÉ`ÉÉÉìÉlÉãÇ™èâä˙âªÇ≥ÇÍÇÈÇÃÇ≈ÅAà¿ëSÇ≈ÇÕdžÇËÇ‹ÇπÇÒÅBÉTÉEÉìÉhÇÃèoóÕÉ`ÉÉÉìÉlÉãÇÃèâä˙âªÇÕÅAÉTÉEÉìÉhÇÃå`éÆÇ™éüÇÃÉoÉbÉtÉ@Ç≈ïœÇÌǡǃǵNjǧèÍçáÇ…î≠ê∂ǵNjÇ∑ÅBÅiǬNjÇËÅAÉTÉEÉìÉhÇ™ÉÇÉmÉâÉãÇ©ÇÁÉXÉeÉåÉIÇ…ïœÇÌÇ¡ÇΩéûǂǪÇÃãtÅAÉTÉEÉìÉhÇ™8ÉrÉbÉgÇ©ÇÁ16ÉrÉbÉgÇ…ïœÇÌÇ¡ÇΩéûǂǪÇÃãtÅAÉTÉEÉìÉhÇÃà≥èkå`éÆÇ™ïœÇÌÇ¡ÇΩéûǂǪÇÃãtÅBÅj

ÇPǬÇÃó·äOÇèúÇ´ÅAäÑÇËçûÇ›éûÇ…ÉTÉEÉìÉhÇÃçƒê∂ÇäJénÇ∑ÇÈDZÇΔÇÕÇ≈Ç´Ç‹ÇπÇÒÅBǵǩǵÅAäÑÇËçûÇ›éûÇ…ÉTÉEÉìÉhÇÃåpë±ÇÇ∑ÇÈDZÇΔÇÕà¿ëSÇ≈Ç∑ÅBó·äOÇΔÇÕÅAÉ^ÉXÉNÉåÉxÉãÇ≈ soundCmd ÇégǡǃÅAÉTÉEÉìÉhÉ`ÉÉÉìÉlÉãÇÃèÄîıÇéñëOÇ…çsÇ¡ÇΩèÍçáÇ≈Ç∑ÅB



èdóv:
SysBeep ÇÕàÍóóDždžÇËÇ‹ÇπÇÒÅBSysBeep ÇÕÉÅÉÇÉäÇÃì]ëóÇ‚äÑÇËìñǃÇçsǧèÍçáǙdžÇËÇ‹Ç∑ÅBäÑÇËçûÇ›éûÇ…ÇÕ SysBeep ÇåƒÇ—èoǵǃÇÕÇ¢ÇØÇ‹ÇπÇÒÅB



Process Manager

GetFrontProcessÅAGetCurrentProcessÅAGetNextProcessÅASameProcessÅAWakeUpProcess ÇÕäÑÇËçûÇ›éûÇ≈LJà¿ëSÇ≈Ç∑ÅB

Multiprocessing Services

ä˘ë∂ÇÃãZèpï∂å£ÅiAdding Multitasking to Applications Using Multiprocessing Services, version 2.1ÅjÇ≈ÇÕÅAMPCurrentTaskIDÅAMPYieldÅAUpTimeÅAMPSignalSemaphoreÅAMPSetEventÅAMPNotifyQueue Ç™à¿ëSÇ≈džÇÈÇΔãLèqÇ≥ÇÍǃǢNjÇ∑ÅB



èdóv:
MPNotifyQueue ÇÕó\Çfl MPSetQueueReserve Ç≈ÉLÉÖÅ[Ç…óÃàÊÇämï€ÇµÇΩèÍçáÇÃÇ›ÅAà¿ëSÇ≈Ç∑ÅB



MPTaskIsPreemptiveÅAMPBlockCopyÅAMPBlockClearÅAMPDataToCode ÇÕãZèpï∂å£Ç…ä‹Ç‹ÇÍǃǢNjÇπÇÒÇ™ÅAäÑÇËçûÇ›éûÇ…åƒÇ—èoǵǃLJà¿ëSÇ≈Ç∑ÅBãZèpï∂å£ÇÕDZÇÍÇÁÇÃä÷êîÇâ¡Ç¶ÇÈÇÊǧÅAâ¸ê≥Ç≥ÇÍÇÈó\íËÅi2456896ÅjÇ≈Ç∑ÅB

Time Manager

InsTimeÅAInsXTimeÅAPrimeTimeÅARmvTime ÇÕäÑÇËçûÇ›éûÇ…é¿çsÇ≈Ç´Ç‹Ç∑ÅB

Process to Process Communications Toolbox

îÒìØä˙Ç≈é¿çsÇ≥ÇÍÇÈÇ∑Ç◊ǃÇà PPC Toolbox ä÷êîÇÕäÑÇËçûÇ›éûÇ…é¿çsÇ≈Ç´Ç‹Ç∑ÅB

Communications Toolbox

Connection Manager ÉãÅ[É`Éì CMReadÅACMWriteÅACMStatus ÇÕäÑÇËçûÇ›éûÇ…égǶNjÇ∑Ç™ÅAǪÇÃëºÇà Connection ManagerÅATerminal ManagerÅAFile Transfer ManagerÅACommunications Resource ManagerÅACommunications Toolbox Utilities ÇÃÉãÅ[É`ÉìÇÕà¿ëSÇ≈ÇÕdžÇËÇ‹ÇπÇÒÅB

Deferred Task Manager

íxâÑÉ^ÉXÉNÅiDeferred taskÅjÇÃÉCÉìÉXÉgÅ[ÉãÇÕ DTInstall Ç…ÇÊǡǃÅAäÑÇËçûÇ›éûÇ≈LJçsǶNjÇ∑ÅBíxâÑÉ^ÉXÉNÇÕäÑÇËçûÇ›éûÇ…é¿çsǵÅAäÑÇËçûÇ›éûDžǵǃÇÕÇ»ÇÁǻǢDZÇΔÇ…è]ÇÌÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅB

Vertical Retrace Manager

SlotVInstallÅAVRemoveÅASlotVRemoveÅAAttachVBLÅADoVBLTaskÅAGetVBLQHdr ÇÕÇ∑Ç◊ǃäÑÇËçûÇ›éûÇ…óòópÇ≈Ç´Ç‹Ç∑ÅB

ÉâÉCÉuÉâÉä

SetupA5ÅASetupA4ÅASetCurrentA5ÅASetCurrentA4 ÇÕà¿ëSÇ≈Ç∑Ç™ÅAÅAǪÇÃÉZÉOÉÅÉìÉgÇ™ÉçÅ[ÉhÇ≥ÇÍǃǢÇÈDZÇΔÇ™èåèÇ≈Ç∑ÅBäJî≠ä¬ã´Ç…ÇÊǡǃê∂ê¨Ç≥ÇÍǃǢÇÈÉRÅ[ÉhÇämîFǵÇΩè„Ç≈égópǵǃâ∫Ç≥Ç¢ÅB

PLStringFuncs.h Ç…ä‹Ç‹ÇÍǃǢÇÈä÷êîÇÕÇ∑Ç◊ǃà¿ëSÇ≈Ç∑Ç™ÅAǪÇÃÉZÉOÉÅÉìÉgÇ™ÉçÅ[ÉhÇ≥ÇÍǃǢÇÈDZÇΔÇ™èåèÇ≈Ç∑ÅB

ÉpÉbÉPÅ[ÉW

äÑÇËçûÇ›éûÇ…ÇÕÉpÉbÉPÅ[ÉWÇΔǵǃé¿ëïÇ≥ÇÍǃǢÇÈÉãÅ[É`ÉìÅiList ManagerÅADisk InitializationÅAStandard FileÅASANEÅAInternational UtilitiesÅAApple Event ManagerÅAPPC BrowserÅAEdition ManagerÅAColor PickerÅADatabase Access ManagerÅAHelp ManagerÅAPicture UtilitiesÅjÇåƒÇ—èoǵǃÇÕÇ¢ÇØÇ‹ÇπÇÒÅBǪÇÃÉpÉbÉPÅ[ÉWÇÕÉÅÉÇÉäè„DžǻǢǩLJǵÇÍǻǢÇÃÇ≈ÅAÉpÉbÉPÅ[ÉWÇ…ä‹Ç‹ÇÍÇÈÉãÅ[É`ÉìÇÕÇ∑Ç◊ǃäÑÇËçûÇ›éûÇ…ÇÕà¿ëSÇ≈ÇÕdžÇËÇ‹ÇπÇÒÅB

Component Manager

ÉRÉìÉ|Å[ÉlÉìÉgÇÃÉIÅ[ÉvÉìÇΔÉNÉçÅ[ÉYÇÕäÑÇËçûÇ›éûÇ…Ç≈Ç´Ç‹ÇπÇÒÅBǵǩǵÅAëΩÇ≠ÇÃÉRÉìÉ|Å[ÉlÉìÉgì‡ÇÃÉãÅ[É`ÉìÇÕäÑÇËçûÇ›éûÇ…åƒÇ—èoǵǃLJà¿ëSÇ≈Ç∑ÅBé¿èÛÇÕÉRÉìÉ|Å[ÉlÉìÉgÇÃÇ…ÇÊÇËÇ‹Ç∑ÇÃÇ≈ÅAè⁄ç◊DžǬǢǃÇÕÉRÉìÉ|Å[ÉlÉìÉgÇÃãZèpèÓïÒÇÇ≤óóâ∫Ç≥Ç¢ÅB

Event Manager

Event Manager ÇÃíÜÇ≈ÅAóBàÍégǶÇÈä÷êîÇÕ PostEvent ÇΔ PPostEvent Ç≈Ç∑ÅBǪÇÃëºÇÃä÷êîÅiOSEventAvailÅATickCountÅAGetKeys Çä‹ÇfiÅjÇÕà¿ëSÇ≈ÇÕdžÇËÇ‹ÇπÇÒÅB



èdóv:
TickCount ÇΔ GetKeys ÇÕà¿ëSÇ≈ÇÕdžÇËÇ‹ÇπÇÒÅBDZÇÍÇÕ Inside Macintosh I Çà 261 ÉyÅ[ÉWÇ…ãLèqÇ≥ÇÍǃǢÇÈ Journaling Mechanism ÇÉTÉ|Å[ÉgǵǃǢÇÈDZÇΔÇ™å¥àˆÇ≈Ç∑ÅBJournaling Mechanism ÇÕLJǧë∂ç›ÇµÇ‹ÇπÇÒÇ™ÅAÉTÅ[ÉhÉpÅ[ÉeÉBÇÃÉ\ÉtÉgÉEÉFÉAǙDZÇÍÇÁÇÃä÷êîÇÉpÉbÉ`ǵǃǢÇÈDZÇΔǙdžÇËÇ‹Ç∑ÅB

OSEventAvail ÇÕÉwÉãÉvÉ}ÉlÅ[ÉWÉÉÇÃÇΩÇflÇÃÉpÉbÉ`à»óàÅASystem 7.0 à»ç~ÇÕà¿ëSÇ≈ÇÕdžÇËÇ‹ÇπÇÒÅBDZÇÍÇÕÉwÉãÉvÉ}ÉlÅ[ÉWÉÉÇÃÉoÉOÇΔLJåæÇ¶Ç‹Ç∑Ç™ÅADZDZNjÇ≈Ç≠ÇÍÇŒ OSEventAvail ÇÕà¿ëSÇ≈ÇÕdžÇËÇ‹ÇπÇÒÅB

äÑÇËçûÇ›éûÇ…é¿çsÇ∑ÇÈÉRÅ[ÉhÇèëÇ≠èÍçáÇÕÉeÅ[ÉuÉãÇPÇÃÉãÅ[É`ÉìÇÇ©ÇÌÇËÇ…égǡǃâ∫Ç≥Ç¢ÅB

 ÉeÅ[ÉuÉãÇP TickCount ÇΔ GetKeys ÇÃÇ©ÇÌÇËÇ…ÅAäÑÇËçûÇ›éûÇ…égǶÇÈÉãÅ[É`Éì

ä÷êîñº

è]óàÇà Mac OS

Carbon

TickCount

LMGetTicks

TickCount [1]

GetKeys ÅiÉÇÉfÉBÉtÉ@ÉCÉAÇÃÇ›Åj

KeyMap ($174) [3]

GetCurrentKeyModifiers

GetKeys (other keys)

KeyMap ($174) [3]

none/GetKeys [2]

 íê:

  1. Carbon ÇégǡǃÅAè]óàÇà Mac OS Ç≈ TickCount ÇåƒÇ—èoÇ∑èÍçáÇÕ LMGetTicks Ç™íºê⁄åƒÇŒÇÍÇ‹Ç∑ÇÃÇ≈ÅAäÑÇËçûÇ›éûÇ…åƒÇ‘DZÇΔÇÕà¿ëSÇ≈Ç∑ÅB
  2. GetKeys ÇÕ Carbon 1.1 à»ç~Ç…å¿ÇËÅAè]óàÇà Mac OS Ç≈äÑÇËçûÇ›éûÇ…óòópÇ≈Ç´Ç‹Ç∑ÅBMac OS X Ç≈ÇÕèÌÇ…à¿ëSÇ≈Ç∑ÅB
  3. KeyMap ÇÕ GetKeys ÇÃï‘Ç∑ÉfÅ[É^Ç™ï€ë∂Ç≥ÇÍǃǢÇÈÉçÅ[ÉÅÉÇÉäÉOÉçÅ[ÉoÉãïœêîÅi$174ÅjÇ≈Ç∑ÅB


QuickDraw

QuickDraw ä÷êîÇÕäÓñ{ìIÇ…äÑÇËçûÇ›éûÇ…égǶNjÇπÇÒÅBó·äOÇÕ SetCursor Ç≈Ç∑ÅBSetCursor ÇÉpÉbÉ`Ç∑ÇÈèÍçáÇÕÅAÉpÉbÉ`Ç™äÑÇËçûÇ›éûÇ…åƒÇŒÇÍǃLJà¿ëSÇ≈džÇÈDZÇΔÇï€èÿÇµÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅB



èdóv:
SetCCursor ÇÕäÑÇËçûÇ›éûÇ…égǶNjÇπÇÒÅBÇ‹Ç∏ÅASetCCursor Ç™éQèΔÇ∑ÇÈÉfÅ[É^ç\ë¢ CCrsr ÇÕÉçÉbÉNÇ≥ÇÍǃǢǻǢÉnÉìÉhÉãÇä‹Ç›Ç‹Ç∑ÅBÇ≥ÇÁÇ…ÅAëΩÇ≠ÇÃÉTÅ[ÉhÉpÅ[ÉeÉBêªïiÇÕ SetCCursor ÇÉpÉbÉ`ǵǃǢNjÇ∑Ç™ÅAëΩÇ≠ÇÃÉpÉbÉ`ÇÕäÑÇËçûÇ›éûÇ…åƒÇ—èoÇ∑DZÇΔÇ™Ç≈Ç´Ç‹ÇπÇÒÅB

ÉAÉbÉvÉãÇ≈ÇÕÅAäÑÇËçûÇ›éûÇ…åƒÇŒÇÍǃLJǢǢÇÊǧǻ SetCCursor ä÷êîÇÃïKóvê´ÇÕóùâǵǃǢNjÇ∑ÅBåªç›ÅAé¿åªï˚ñ@Çåüì¢ÇµÇƒÇ¢Ç‹Ç∑ÅB



SetRectÅARandom ÇÃÇÊǧDžíPèÉÇ»ä÷êîÇ≈LJà¿ëSÇ≈ÇÕdžÇËÇ‹ÇπÇÒÅBäÑÇËçûÇ›éûÇ…åƒÇ—èoǵǃÇÕÇ¢ÇØÇ‹ÇπÇÒÅB

Text Utilities

EqualString ÇΔ RelStringÅi_CmpStringÅi$A03CÅjÇΔ _RelStringÅi$A050ÅjÉgÉâÉbÉvÇ™å≥DžǻǡǃǢÇÈëºÇÃä÷êîÇä‹ÇfiÅjÇÕäÑÇËçûÇ›éûÇ…åƒÇ—èoÇ∑DZÇΔÇ™â¬î\Ç≈Ç∑ÅBDZÇÃä÷êîÇÕ Mac OSÅiFile Manager Ç‚ãå AppleTalk ÉXÉ^ÉbÉNÅjÇ≈égÇÌÇÍǃǢÇÈÇÃÇ≈ÅAà¿ëSÇ≈Ç∑ÅB



èdóv:
EqualString ÇΔ RelString ÇÕÉXÉNÉäÉvÉgÇ‚åæåÍèÓïÒÇìKâûǵǻǢÇÃÇ≈ÅAÉÜÅ[ÉUÇÃñ⁄Ç…êGÇÍÇÈÇÊǧǻï∂éöóÒÇ…égǡǃÇÕÇ¢ÇØÇ‹ÇπÇÒÅBÉÜÅ[ÉUÇÃñ⁄Ç…êGÇÍÇÈÇÊǧǻï∂éöóÒÇÃî‰ärÇ…ÇÕ "StringOrder.h" Ç≈íËã`Ç≥ÇÍǃǢÇÈä÷êîÅiIdenticalStringÅACompareStringÅAStringOrder ǻǫÅjÇÇ≤égópâ∫Ç≥Ç¢ÅBÇΩÇæÇµÅADZÇÍÇÁÇÕäÑÇËçûÇ›éûÇ…ÇÕégópÇ≈Ç´Ç‹ÇπÇÒÅB



íê:
EqualString ÇΔ RelString ÇÕà»â∫ÇÃï∂éöóÒÇî‰ärÇ∑ÇÈÇΩÇflÇ…égǢNjÇ∑ÅB

  • File Manager Ç™ï‘Ç∑ÉtÉ@ÉCÉãñºÅiÇΩÇæÇµÅAHFS ÇΔìØÇ∂ï¿Ç—èáÇé¿åªÇµÇΩÇ¢èÍçáÇÃÇ›Åj
  • ÉäÉ\Å[ÉXñº
  • AppleTalk NBP ÉGÉìÉeÉBÉeÉBñºÅAÉ^ÉCÉvñºÅAÉ]Å[Éìñº

Unicode Converter

êßå¿ïtÇ´Ç≈Ç∑Ç™ÅAUnicode Converter ÇäÑÇËçûÇ›éûÇ…åƒÇ—èoÇ∑DZÇΔÇ™â¬î\Ç≈Ç∑ÅBDZÇÃÇÊǧDž Unicode Converter ÇåƒÇ—èoÇ∑ïKóvǙdžÇÈèÍçáÇÕ DTS Ç…Ç≤òAóçâ∫Ç≥Ç¢ÅB

ÉgÉbÉvÇ…ñflÇÈ

 

äÑÇËçûÇ›éûÇ…åƒÇ—èoǵâ¬î\Ç»ÉãÅ[É`Éì

ï\ÇPÇÕäÑÇËçûÇ›éûÇ…åƒÇ—èoǵâ¬î\Ç»ÉãÅ[É`ÉìÇ≈Ç∑ÅBÉAÉXÉ^ÉäÉXÉNÅi*ÅjÇ™ïtÇ¢ÇΩÉãÅ[É`ÉìÇÕÅAégópÇ…ç€ÇµÇƒâΩÇÁÇ©ÇÃêßñÒǙdžÇËÇ‹Ç∑ÅBè⁄ç◊ÇÕDZÇÃÉeÉNÉjÉJÉãÉmÅ[ÉgÇÃñ{ï∂ÇéQèΔǵǃÇ≠ÇæÇ≥Ç¢ÅB


ï\ÇPÅ@äÑÇËçûÇ›éûÇ…åƒÇ—èoǵâ¬î\Ç»ÉãÅ[É`Éì


AddrToName *
AttachVBL
BatteryStatus
BlockMove
PBControlAsync
CMRead
CMStatus
CMWrite
DebuggerEnter
DebuggerExit
DebuggerGetMax
DebuggerLockMemory
DebuggerPoll
DebuggerUnlockMemory
DeferUserFN
Dequeue
DoVBLTask
Enqueue
EqualString
ExtendedToString
Format2Str
FormatRecToString
FormatStr2X
FormatX2Str
GetCurrentProcess
GetFrontProcess
GetFSInfo
GetNextProcess
GetPageState
GetPhysical
GetVBLQHdr
HInfo *
HoldMemory *
InsTime
InsXTime
LockMemory *
LockMemoryContiguous *
LockMemoryForOutput *
MACEVersion
MPBlockClear
MPBlockCopy
MPCurrentTaskID
MPDataToCode
MPNotifyQueue *
MPSetEvent
MPSignalSemaphore
MPTaskIsPreemptive
MPYield
MXInfo *
NMInstall
NMRemove
         Open Transport ä÷êî *
PBAllocContigAsync
PBAllocateAsync
PBCatMoveAsync
PBCatSearchAsync
PBCloseAsync *
PBCloseWDAsync
PBControlAsync
PBControlImmed *
PBCreateAsync
PBCreateFileIDRefAsync
PBDTAddAPPLAsync
PBDTAddIconAsync
PBDTDeleteAsync
PBDTFlushAsync
PBDTGetAPPLAsync
PBDTGetCommentAsync
PBDTGetIconAsync
PBDTGetIconInfoAsync
PBDTGetInfoAsync
PBDTRemoveAPPLAsync
PBDTRemoveCommentAsync
PBDTResetAsync
PBDTSetCommentAsync
PBDeleteAsync
PBDeleteFileIDRefAsync
PBDirCreateAsync
PBExchangeFilesAsync
PBFlushFileAsync
PBFlushVolAsync
PBGetAltAccessAsync
PBGetCatInfoAsync
PBGetEOFAsync
PBGetFCBInfoAsync
PBGetFInfoAsync
PBGetFPosAsync
PBGetForeignPrivsAsync
PBGetUGEntryAsync
PBGetVInfoAsync
PBGetVolAsync
PBGetWDInfoAsync
PBGetXCatInfoAsync
PBHCopyFileAsync
PBHCreateAsync
PBHDeleteAsync
PBHGetDirAccessAsync
PBHGetFInfoAsync
PBHGetLogInInfoAsync
PBHGetVInfoAsync
PBHGetVolAsync
PBHGetVolParmsAsync
PBHMapIDAsync
PBHMapNameAsync
PBHMoveRenameAsync
PBHOpenAsync *
PBHOpenDFAsync
PBHOpenDenyAsync
PBHOpenRFAsync
PBHOpenRFDenyAsync
PBHRenameAsync
PBHRstFLockAsync
PBHSetDirAccessAsync
PBHSetFInfoAsync
PBHSetFLockAsync
PBHSetVolAsync
PBLockRangeAsync
PBMakeFSSpecAsync
PBOpenAsync *
PBOpenDFAsync
PBOpenRFAsync
PBOpenWDAsync
PBReadAsync
PBReadImmed *
PBRenameAsync
PBResolveFileIDRefAsync
PBRstFLockAsync
PBSetAltAccessAsync
PBSetCatInfoAsync
PBSetEOFAsync
PBSetFInfoAsync
PBSetFLockAsync
PBSetFPosAsync
PBSetFVersAsync
PBSetForeignPrivsAsync
PBSetVInfoAsync
PBSetVolAsync
PBStatusAsync
PBStatusImmed *
PBShareAsync
PBUnlockRangeAsync
PBUnshareAsync
PBWriteAsync
PBWriteImmed *
PBXGetVolInfoAsync
PageFaultFatal
PostEvent
PPostEvent
PrimeTime
RelString
RmvTime
SameProcess
SetCursor
SetFSInfo
SetWUTime
SleepQInstall
SleepQRemove
SlotVInstall
SlotVRemove
SndDoCommand *
SndGetSysBeepState
SndManagerStatus
SndPauseFilePlay
SndSetSysBeepState
SndSoundManagerVersion
PBStatusAsync
StrToAddr *
StringToExtended
StripAddress
SwapMMUMode
Translate24to32
UnholdMemory
UnlockMemory
UpTime
UTAllocateFCB
UTReleaseFCB
UTLocateFCB
UTLocateNextFCB
UTIndexFCB
UTResolveFCB
UTAddNewVCB
UTLocateVCBByRefNum
UTLocateVCBByName
UTLocateNextVCB
UTAllocateWDCB
UTReleaseWDCB
UTResolveWDCB
UTFindDrive
UTAdjustEOF
UTSetDefaultVol
UTGetDefaultVol
UTEjectVol
UTCheckWDRefNum
UTCheckFileRefNum
UTCheckVolRefNum
UTCheckPermission
UTCheckVolOffline
UTCheckVolModifiable
UTCheckFileModifiable
UTCheckDirBusy
UTParsePathname
UTGetPathComponentName
UTDetermineVol
UTGetBlock
UTReleaseBlock
UTFlushCache
UTMarkDirty
UTTrashVolBlocks
UTTrashFileBlocks
UTTrashBlocks
UTCacheReadIP
UTCacheWriteIP
UTBlockInFQHashP
UTVolCacheReadIP
UTVolCacheWriteIP
VRemove
WakeUpProcess


éQçlï∂å£

Inside Macintosh: Memory

File System Manager SDK

Designing PCI Cards and Drivers for Power Macintosh Computers

Technote 1033: "Interrupts in Need of (a Good) Time"

Technote 1067: "Traditional Device Drivers: Sync or Swim"

Technote 1084: "Running CFM-68K Code at Interrupt Time: Is Your Code at Risk"

Technote 1094: "Virtual Memory Application Compatibility".

Technote ME 09: "Coping with VM and Memory Mappings

ÉgÉbÉvÇ…ñflÇÈ

 

ïœçXóÔ



1998îN2åé

èâî≈

1998îN7åé

à»â∫ÇÃïîï™Çí«â¡Å^çXêV

1999îN11åé

Event Manager Ç… OSEventAvail Çí«â¡ÇµÇ‹ÇµÇΩÇ™ÅAà»å„ÇÃïœçXÇ≈DZÇÍÇÕìPâÒÇ≥ÇÍNjǵÇΩÅB

1999îN12åé

Text Utilities Çí«â¡ÇµÇ‹ÇµÇΩÅB

2000îN1åé

Unicode Converter Çí«â¡ÇµÇ‹ÇµÇΩÅBÇ‹ÇΩÅAOSEventAvail ÇÃãLèqÇçXêVÅi2418891ÅjǵNjǵÇΩÅB

2000îN2åé

Communications Toolbox Çí«â¡ÇµÇ‹ÇµÇΩÅB

2000îN4åé

Multiprocessing Services Çí«â¡ÇµÇ‹ÇµÇΩÅB

2000îN10åé

é¿çsÉåÉxÉãÇÃéÊìæï˚ñ@Çí«â¡ÇµÇ‹ÇµÇΩÅBEvent Manager ÇÃÇΔDZÇÎÇçXêVǵÅAGetKeys Ç™ CarbonLib 1.1 à»ç~Ç…å¿ÇËÅAäÑÇËçûÇ›éûÇ…åƒÇ—èoǵǃLJà¿ëSÇ≈džÇÈÇΔÇÃãLèqÇâ¡Ç¶Ç‹ÇµÇΩÅB



ÉgÉbÉvÇ…ñflÇÈ



É_ÉEÉìÉçÅ[Éh

é¿çsÉåÉxÉãÅiCurrentExecutionLevelÅjÇÃéÊìæï˚ñ@ÉTÉìÉvÉãÉRÅ[Éh

Download

 

ÉgÉbÉvÇ…ñflÇÈ